У меня есть форма входа в систему, как показано ниже.
Текстовое поле для имени пользователя, пароля, captcha и кнопки SIGN-IN доступно для ввода и просмотра с самого начала. Используя Selenium, я могу предоставить вход для имени пользователя и пароля. Затем, я должен ждать ввода CAPTCHA пользователями, а затем снова нажмите кнопку SIGN IN.
После нажатия кнопки SIGN-IN webdriver должен взять элемент управления для следующего.
Таким образом, webdriver должен дождаться нажатия кнопки SIGN-IN (для пользователя1 может потребоваться 2 секунды для входа в CAPTCHA, но для пользователя2 для входа в CAPTCHA может потребоваться 5 секунд).
Это кнопка HTML для кнопки SIGN IN.
<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()
Вы можете попробовать это,
WebDriverWait(driver, 10).until(EC.element_to_be_clickable(btnSignIn))