Как дождаться нажатия кнопки пользователем в веб-драйвере Selenium с помощью python? - PullRequest
0 голосов
/ 31 августа 2018

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

enter image description here

Текстовое поле для имени пользователя, пароля, капчи и кнопки входа в систему доступны для нажатия и отображаются с начала . Используя Selenium, я могу обеспечить ввод имени пользователя и пароля. Затем я должен дождаться ввода CAPTCHA пользователями, а затем снова нажать кнопку «SIGN IN» для пользователя.

После нажатия кнопки «ВХОД» веб-драйвер должен перейти к следующему.

Таким образом, веб-драйвер должен дождаться нажатия кнопки «ВХОД» (для пользователя 1 может потребоваться 2 секунды для входа в CAPTCHA, но для пользователя 2 может потребоваться 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))

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

Ответы [ 2 ]

0 голосов
/ 31 августа 2018

Вы можете реализовать следующее решение:

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

Это должно позволить подождать, пока пользователь не нажмет клавишу ВВОД, а затем выполнить нажатие кнопки «Отправить»

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

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 голосов
/ 31 августа 2018

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

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