Python Selenium не может войти, нажав на кнопку внутри формы - PullRequest
0 голосов
/ 21 декабря 2018

веб-сайт: https://www.etoro.com/login

Я пытаюсь нажать на кнопку Войти по xpath:

Пробная версия кода:

driver.find_element_by_xpath("/html/body/ui-layout/div/div/div[1]/login/login-sts/div/div/div[1]/form/div/div[4]/button").click()

Но не удалось сделать это.Опробовано css и по классу, но не может войти.

Когда я пытаюсь войти вручную, то это происходит успешно, но в то время как через selenium python это не удается.

Страница показывает толькоошибка: «Произошла ошибка, пожалуйста, попробуйте еще раз» Есть ли какие-либо предложения, что делать или что я не получаю здесь?

<button automation-id="login-sts-btn-sign-in" ng-click="loginCtrl.login(loginForm)" class="e-btn-big wide dark pointer">Sign in</button>
driver.find_element_by_xpath("/html/body/ui-layout/div/div/div[1]/login/login-sts/div/div/div[1]/form/div/div[4]/button").click()

Ожидаемым результатом будет успешный вход в систему и отображение на панели моего аккаунта.

Ответы [ 2 ]

0 голосов
/ 21 декабря 2018

Чтобы отправить последовательность символов в поля Имя пользователя и Пароль , а также вызвать click() для элемента с текстом Войдите в систему в качестве значениявам нужно вызвать WebDriverWait , чтобы элемент можно было нажимать , и после этого вы сможете использовать следующее решение:

  • Блок кода:

    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    
    driver= webdriver.Firefox(executable_path=r'C:\Utility\BrowserDrivers\geckodriver.exe')
    driver.get("https://www.etoro.com/login")
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input.w-login-main-form-input.ng-valid-email.ng-invalid-required.ng-valid-pattern"))).send_keys("Etoro")
    driver.find_element_by_css_selector("input.w-login-main-form-input[type='password']").send_keys("Test")
    driver.find_element_by_css_selector("button.e-btn-big.wide.dark.pointer[automation-id='login-sts-btn-sign-in']").click()
    
  • Снимок браузера:

etoro

0 голосов
/ 21 декабря 2018

Вам необходимо установить chromedriver и chrome.Вы можете изменить эти настройки для других браузеров, если хотите.Это прекрасно работает для меня.

Моя ОС: Ubuntu 16.04

from selenium import webdriver

browser = webdriver.Chrome("/usr/lib/chromium-browser/chromedriver")

browser.get('<login_url>')

username = browser.find_element_by_name("<username_name_tag>")
password = browser.find_element_by_name("<password_name_tag>")

username.send_keys("<username>")
password.send_keys("<password>")

browser.find_element_by_xpath("//button[@automation-id='login-sts-btn-sign-in' and @value='Sign in']").click() 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...