всегда сообщение «неверный пароль» при автоматическом входе в систему Selen - PullRequest
0 голосов
/ 16 апреля 2020

Я пытаюсь автоматизировать логин дуолина go с помощью Selenium с кодом, размещенным ниже. Хотя на первый взгляд кажется, что все работает как положено, я всегда получаю сообщение «Неправильный пароль» на веб-сайте после нажатия кнопки входа в систему. Я снова и снова проверял пароль и даже изменил его на пароль без специальных символов, но по-прежнему не удается войти в систему. В других примерах я видел, что иногда есть дополнительное поле для ввода пароля, однако я не могу найти его при проверке html.

Чего мне не хватает?

(Примечание: я также открыт для совершенно другого решения без веб-драйвера, поскольку я действительно хочу попасть на страницу duolin go .com / learn, чтобы очистить некоторые данные, но пока что Я не нашел альтернативного способа входа)

Используемый код:

from selenium import webdriver
from time import sleep

url = "https://www.duolingo.com/"


def login():
    driver = webdriver.Chrome()
    driver.get(url)

    sleep(2)

    hve_acnt_btn = driver.find_element_by_xpath("/html/body/div/div/div/span[1]/div/div[1]/div[2]/div/div[2]/a")
    hve_acnt_btn.click()

    sleep(2)

    email_input = driver.find_element_by_xpath("/html/body/div[1]/div[3]/div[2]/form/div[1]/div/label[1]/div/input")
    email_input.send_keys("email@email.com")

    sleep(2)

    pwd_input = driver.find_element_by_css_selector("input[type=password]")
    pwd_input.clear()
    pwd_input.send_keys("password")

    sleep(2)

    login_btn = driver.find_element_by_xpath("/html/body/div[1]/div[3]/div[2]/form/div[1]/button")
    login_btn.click()

    sleep(5)

login() 

Я не смог опубликовать html на сайте из-за ограничения по количеству символов, поэтому вот ссылка на дуолин go страница: дуолин go

1 Ответ

0 голосов
/ 16 апреля 2020

Переключитесь на Firefox или браузер, который не сообщает странице, которую вы посещаете, автоматически. Смотрите мой предыдущий ответ на очень похожую проблему здесь: { ссылка }

Короче говоря: при запуске Chrome он будет работать с navigator.webdriver=true. Вы можете проверить это в консоли. Страницы могут обнаружить этот флаг и заблокировать вход в систему или другие действия, следовательно, неверный вход. Это флаг только для чтения, установленный браузером при запуске.

При Chrome я также не смог войти в Duolin go. После того, как я переключил драйвер на Firefox, тот же самый код просто работал.

Также, если я могу рекомендовать, попробуйте использовать Xpath с атрибутами.

Вместо этого:

hve_acnt_btn = driver.find_element_by_xpath("/html/body/div/div/div/span[1]/div/div[1]/div[2]/div/div[2]/a")

Вы можете использовать:

hve_acnt_btn = driver.find_element_by_xpath('//*[@data-test="have-account"]')

То же самое для:

email_input = driver.find_element_by_xpath("/html/body/div[1]/div[3]/div[2]/form/div[1]/div/label[1]/div/input")

против:

email_input = driver.find_element_by_xpath('//input[@data-test="email-input"]')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...