Не удается получить селен, чтобы найти элемент и выбрать его. - PullRequest
0 голосов
/ 09 мая 2019

Я пытаюсь автоматизировать вход в систему для нескольких учетных записей quora, чтобы проверить их доход.

Я застреваю в первой части: экране входа в систему.

Я пытался использоватьcss_selector, xpath и name.Моя проблема в том, как настроена страница входа в систему quora, xpath НОВЫЙ для каждого нового экземпляра, поэтому нет способа выбрать элемент по этому.

from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_argument('headless')
options.add_argument('window-size=1200x600')

driver = webdriver.Chrome(options=options)

driver.get('https://quora.com')

driver.implicitly_wait(3)

email = driver.find_element_by_css_selector('input[type=password]')
password = driver.find_element_by_css_selector('input[type=password]')
login = driver.find_element_by_css_selector('input[value="Login"]')

email.send_keys('')
password.send_keys('')

driver.get_screenshot_as_file('main-page.png')

- это то, что у меня естьпока.

Может кто-нибудь взглянуть на www.quora.com и выяснить, на какой элемент я должен ориентироваться, чтобы заполнить форму и отправить ее?Потому что я пытался больше часа безуспешно, потому что ничего не работает.

1 Ответ

1 голос
/ 09 мая 2019

Ваша проблема в неправильных селекторах

  1. У вас есть input[type=password] селектор 2 раза, что неверно, так как у вас должны быть разные селекторы для ввода электронной почты и ввода пароля
  2. Ваш селектор соответствует 2 элементам, о чем свидетельствуют Инструменты разработчика Chrome

    enter image description here

    , поэтому Selenium пытается отправить ключи на 1-й, который являетсяне видно / не взаимодействует

Поэтому убедитесь, что:

  • Используйте правильные селекторы
  • Используйте селекторы, которые идентифицируют элементы в чистом виде иуникальным образом, таким образом вы будете уверены, что работаете с ожидаемым элементом, то есть придерживайтесь атрибута Placeholder

    email = driver.find_element_by_css_selector('input[Placeholder=Email]')
    password = driver.find_element_by_css_selector('input[Placeholder=Password]')
    
  • Во время разработки теста лучше использовать «обычный» браузер, чтобы вы могли наблюдать за тем, что происходит во время выполнения теста

  • Вы также можете придерживаться шаблона объектной модели страницы , таким образомвы сможете быстро обновить элементлокаторы пока логика остается прежней.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...