我对一个元素感兴趣,就叫它吧
<div class="ofInterest" some-attr="dataIReallyWant"></div>
当我在 firefox 中关闭 js 时,这个元素不存在。使用 javascript 就可以了。我不知道它是如何生成的,但我的猜测是有一个 ajax 调用返回一个执行此 javascript 的 js 文件。
我正在使用 selenium,但速度很慢。我想告诉 Selenium:
等待此元素加载,例如
EC.visibility_of_element_located((By.CSS, '.ofInterest'))
一旦检测到所述元素,请停止阻止代码并且不再下载任何内容,以免浪费我的带宽
最佳答案
只需等待元素存在于 DOM 中,然后退出/关闭浏览器或执行一些 JavaScript 以停止加载页面:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Firefox()
driver.get("http://somedomain/url_that_delays_loading")
try:
element = WebDriverWait(driver, 10).until( #10 second timeout.
EC.presence_of_element_located((By.ID, "myDynamicElement"))
)
finally:
driver.quit()
# OR
#driver.execute_script("window.stop();")
可以找到更多信息here.
关于python - 告诉 Selenium 在预期条件后停止阻塞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27488653/