python - 告诉 Selenium 在预期条件后停止阻塞

标签 python selenium selenium-webdriver

我对一个元素感兴趣,就叫它吧

<div class="ofInterest" some-attr="dataIReallyWant"></div>

当我在 firefox 中关闭 js 时,这个元素不存在。使用 javascript 就可以了。我不知道它是如何生成的,但我的猜测是有一个 ajax 调用返回一个执行此 javascript 的 js 文件。

我正在使用 selenium,但速度很慢。我想告诉 Selenium:

  1. 等待此元素加载,例如 EC.visibility_of_element_located((By.CSS, '.ofInterest'))

  2. 一旦检测到所述元素,请停止阻止代码并且不再下载任何内容,以免浪费我的带宽

最佳答案

只需等待元素存在于 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/

相关文章:

python - 在 Python 中覆盖 __new__ 方法的真实世界示例

python - 如何从一个 pandas 数据帧中减去另一个数据帧的行?

Pythonic 方法 : Finding First Matching Path With Minimal Runtime

python-3.x - 如何使用 Selenium 和 Python 引用 HTML 中的文本来定位元素

firefox - Selenium Web Driver(Firefox) 有时无法通过 id 找到网页中存在的元素

python - Django 从选择元组连接

javascript - 如何使用 Selenium/Python 模拟 onclick (JavaScript)

RSelenium错误: Can't Connect to Host; Selenium Server is not running

python - 如何在 Python 中使用 Selenium 在 YouTube 上搜索和播放视频?

python - 构建函数以清除字段和 send_keys