selenium - 位于 selenium 2.0 中检查 DOM 上元素是否存在的元素可见性的替代方案?

标签 selenium python-2.7 selenium-webdriver

我的框架中有一个问题,我没有使用静态 sleep ,而是尝试等待元素的可见性。问题是元素的可见性检查 DOM 上是否存在元素,这将返回 true,但在我的系统中页面尚未完全加载。发生的情况是,一旦我在检查元素的可见性时得到 true,我就会设置值。当实际页面完全加载时,这些值会重置。

我的问题是,由于元素的可见性对我不起作用,我可以使用什么来代替静态 sleep 来等待实际页面(不仅是 DOM)完全加载?

附注我正在使用 Selenium webdriver 和 python 2.7

/亚当

最佳答案

expected_conditions.visibility_of_element_located(locator)方法将检查两者 - DOM 中元素的存在及其可见性(元素以大于零的高度和宽度显示)。

理想情况下,driver.get(url)方法应自动等待整页加载,然后再转到下一行。但是,如果正在测试的 Web 应用程序使用 ajax 调用/操作(虽然页面已加载,但 ajax 操作仍在进行中),则这可能不会按预期运行。在这种情况下,我们可以使用如下所示的方法来等待稳定,然后再对所需的网络元素执行操作。

# create the firefox driver
driver = webdriver.Firefox()

# navigate to the app url
driver.get('http://www.google.com')

# keep a watch on jQuery 'active' attribute
WebDriverWait(driver, 10).until(lambda s: s.execute_script("return jQuery.active == 0"))

# page should be stable enough now, and we can perform desired actions
elem = WebDriverWait(driver, 10).until(expected_conditions.visibility_of_element_located((By.ID, 'id')))

elem.send_keys('some text')

希望这有帮助..

关于selenium - 位于 selenium 2.0 中检查 DOM 上元素是否存在的元素可见性的替代方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16213679/

相关文章:

html - 如何使用多个类通过 watir-webdriver 查找元素?

Firefox webdriver 始终打开首次运行页面

Python,CouchDb : how to Update already existing document by ID

python - 将字典(键和值)写入 csv 文件

Selenium Webdriver Python 如何从输入标签获取文本

java - 尝试单击弹出窗口的按钮时出现 NoSuchElementException

java - 如何使用Selenium WebDriver打开手机版网站?

python - Selenium 没有将 key 发送到我的 gwt-SuggestBox

python - 迭代包含字典中的键的列。从第二个字典返回匹配的键,保持第一个字典中键的顺序

java - 未找到与 Contains 匹配的字符串 - Java