如何使用Python在Selenium Web驱动程序中等待用户单击按钮?

时间:2018-08-31 06:36:41

标签: python python-3.x selenium selenium-webdriver webdriver

我有一个如下的登录表单。

enter image description here

用户名,密码,验证码和“登录”按钮的文本框是可单击的,并且从一开始就可见。 使用Selenium,我可以提供用户名和密码的输入。 然后,我必须等待用户输入验证码,然后再次单击用户的“登录”按钮。

点击“登录”按钮后,网络驱动程序应控制下一步。

因此,网络驱动程序应等待单击“登录”按钮(对于user1,可能需要2秒钟才能输入验证码,但是对于user2,可能需要5秒钟才能输入验证码)。

这是“登录”按钮的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))

我该怎么做? 预先感谢。

2 个答案:

答案 0 :(得分:1)

您可以实施以下解决方案:

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键然后执行Submit按钮后单击

如果您不希望用户与浏览器进行交互,而仅与控制台进行交互,则可以改进以下代码:

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()

答案 1 :(得分:0)

您可以尝试

WebDriverWait(driver, 10).until(EC.element_to_be_clickable(btnSignIn))