我有一个如下所示的登录表单。
用户名、密码、验证码和登录按钮的文本框从一开始就可以点击并可见。 使用 Selenium 我可以提供用户名和密码的输入。 然后,我必须等待用户输入验证码,然后再由用户点击登录按钮。
点击 SIGN-IN 按钮后,webdriver 应该控制下一步。
因此,webdriver 应该等到 SIGN-IN 按钮被点击(对于 user1,可能需要 2 秒才能进入 CAPTCHA,但是对于 user2,可能需要 5 秒才能进入 CAPTCHA)。
这是登录按钮的 HTML。
<button _ngcontent-c4="" class="search_btn" type="submit">SIGN IN</button>
我在下面尝试过,但是,它不起作用。
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Chrome()
driver.get("url")
btnSignIn = driver.find_element_by_xpath("//form/button[@type='submit' and @class='search_btn']")
WebDriverWait(driver, timeout=600).until(EC.staleness_of(btnSignIn))
我该怎么做? 提前致谢。
最佳答案
您可以实现以下解决方案:
driver = webdriver.Chrome()
driver.get("url")
# Code for entering Username, Password
...
# Wait until user enter Captcha
input("Press ENTER after filling CAPTCHA")
driver.find_element_by_xpath("//form/button[@type='submit' and @class='search_btn']").click()
这应该允许等到用户按下 ENTER 键然后执行提交按钮单击
如果您不希望用户与浏览器交互,而只与控制台交互,您可以改进代码如下:
driver = webdriver.Chrome()
driver.get("url")
# Code for entering Username, Password
...
# Wait until user enter Captcha (in console) and press ENTER
captcha_input = driver.find_element_by_xpath('//input[@placeholder="Enter Captcha"]')
captcha = input("Enter CAPTCHA and Press ENTER\n")
captcha_input.send_keys(captcha)
driver.find_element_by_xpath("//form/button[@type='submit' and @class='search_btn']").click()
关于python - 如何等待用户在使用 python 的 Selenium 网络驱动程序中单击按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52109777/