Как дождаться нажатия кнопки пользователем в веб-драйвере Selenium с помощью python?

1

У меня есть форма входа в систему, как показано ниже.

Изображение 174551

Текстовое поле для имени пользователя, пароля, 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))

Как я могу это сделать? Заранее спасибо.

Теги:
python-3.x
selenium
selenium-webdriver
webdriver

2 ответа

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, а затем запустит кнопку "Отправить"

Если вы не хотите, чтобы пользователь взаимодействовал с браузером, но только с консолью, вы можете улучшить код, как показано ниже:

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

Вы можете попробовать это,

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню