我正在尝试使用 selenium 来解析以下 html 页面:
<html>
<button>Press me</button>
<body>
<div class="user-list ng-scope"></div>
</body>
</html>
当我按下页面上的按钮时,div 充满了一系列“正在加载”的 div:
<html>
<button>Press me</button>
<body>
<div class="user-list ng-scope">
<div class="panel">
<div class="panel-body">
<i class="glyphicon.glyphicon-cog.spinner.ng-
scope::before"></i>
</div>
</div>
<div class="panel">
<div class="panel-body">
<i class="glyphicon.glyphicon-cog.spinner.ng-
scope::before"></i>
</div>
</div>
</div>
</body>
</html>
加载完成<div class="panel"></div>'s后,html 如下所示:
<html>
<button>Press me</button>
<body>
<div class="user-list ng-scope">
<div class="panel">
<div class="panel-body">
<i class="glyphicon glyphicon-chevron-right"></i>
</div>
</div>
<div class="panel">
<div class="panel-body">
<i class="glyphicon glyphicon-chevron-right"></i>
</div>
</div>
</div>
</body>
</html>
注意<i></i>类已经改变。基本上我想在 Python 的 selenium 模块中使用一种方法来等待<div class="panel"></div>'s加载。我的第一个想法是等待<i></i>类从 glyphicon.glyphicon-cog.spinner.ng-scope::before 更改为 glyphicon-chevron-right,这表明 div 已加载。我使用以下 python 代码行来执行此操作:
import selenium
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException
driver.wait.until(EC.presence_of_all_elements_located((By.CLASS_NAME, "glyphicon-chevron-right")))
不幸的是,这似乎不起作用,因为程序在 div 完全加载之前终止。有谁知道利用 Python 的 selenium 等待任意数量的元素加载的方法?