微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python-等待,直到在Selenium WebDriver中单击按钮以单击下一个按钮?

我正要在程序中单击浏览器中的一个按钮,然后在该页面中应显示一个按钮.该按钮出现后,我的程序将立即运行下一步操作,以单击下一步按钮.我目前收到此错误

ElementNotVisibleException: Message: element not visible

因此,我假设我正在调用该操作以在该按钮出现之前单击下一个按钮.我的问题是我该如何做才能让程序等到可以单击按钮,再单击按钮?

driver.find_element_by_xpath('//*[@id="add-remove-buttons"]/input').click()
driver.find_element_by_xpath('//*[@id="cart"]/a[2]').click()

这就是程序底部代码.我需要能够等到第二个动作才可以完成第二个动作.感谢您的所有帮助!

解决方法:

您正在寻找SeleniumWaits.本质上,您想单击一个按钮,然后等待另一个按钮出现,然后单击该按钮.这里也回答了类似的问题:Selenium waitForElement.

您可以这样做(未经测试的代码):

import contextlib
import selenium.webdriver as webdriver
import selenium.webdriver.support.ui as ui

with contextlib.closing(webdriver.Firefox()) as driver:
    driver.get('http://example.com')
    wait = ui.webdriverwait(driver,10)

    driver.find_element_by_xpath('//*[@id="add-remove-buttons"]/input').click()

    # Wait until the element appears
    wait.until(lambda driver: driver.find_element_by_xpath('//*[@id="cart"]/a[2]'))
    driver.find_element_by_xpath('//*[@id="cart"]/a[2]').click()

您可能需要尝试一下.我发现,每当我使用等待时,都要花一些时间才能正确处理.您可以使用driver.save_screenshot进行调试.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐