Selenium Python - более компактный или Pythoni c способ ввода имени пользователя и пароля? - PullRequest
2 голосов
/ 09 июля 2020

Мне нужно войти на веб-сайт, и у меня уже есть следующий код, который отлично работает:

username = driver.find_element_by_name('uname')
password = driver.find_element_by_name('password')
username.send_keys('username'), password.send_keys('password', Keys.RETURN)

Прямо сейчас имя пользователя и пароль жестко прописаны в программе, но в конечном итоге я потребовать от пользователя предоставить оба из соображений безопасности. Есть ли способ сделать то, что я написал, более компактным или более Pythoni c? Я стараюсь держаться как можно ближе к PEP8 для собственной выгоды.

1 Ответ

1 голос
/ 10 июля 2020

Ваша программа полностью Pythoni c, если нет ошибок времени выполнения .

Сказав это, с точки зрения Selenium есть пара следующих проблем:

  • Предположительно, вы инициируете поиск имени пользователя после вызова get(). Так что в идеале вы должны вызвать WebDriverWait для element_to_be_clickable() и после этого вызвать send_keys() следующим образом:

    driver.get(url)
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.NAME, "'uname'"))).send_keys('username')
    driver.find_element_by_name('password').send_keys('password')
    
  • Более того, я бы посоветовал избежать попытайтесь набрать send_keys(Keys.RETURN), если у вас не пропущен какой-либо другой вариант. В идеале вы должны вызвать click() на кнопке Login или Sign In следующим образом:

    driver.find_element_by_css_selector('cssSelector').click()
    # incase the elements are with in a <form>
    driver.find_element_by_css_selector('cssSelector').submit()
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...