我有一个如下的登录表单。
用户名,密码,验证码和“登录”按钮的文本框是可单击的,并且从一开始就可见。 使用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))
我该怎么做? 预先感谢。
答案 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))