我的框架中有一个问题,我没有使用静态 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/