Selenium Dynami c Элемент Python - PullRequest
0 голосов
/ 06 мая 2020

Здравствуйте, я использую селен. Я должен отправить ключ на этот вход.

<input id="209f0c3d-3222-4caa-b55d-1d4463322fd4" type="email" placeholder="E-posta adresi" value="" name="emailAddress" data-componentname="emailAddress" autocomplete="email" autocorrect="off" autocapitalize="off" spellcheck="false">

<input id="8ccf12d3-e264-43b8-8bbe-70e1f3eef202" type="email" placeholder="E-posta adresi" value="" name="emailAddress" data-componentname="emailAddress" autocomplete="email" autocorrect="off" autocapitalize="off" spellcheck="false">

Например, каждый refre sh, идентификатор входа меняется. Как найти этот элемент с селеном

Ответы [ 3 ]

2 голосов
/ 06 мая 2020

вы можете найти их по xpath

то есть:

<html>
 <body>
  <form id="loginForm">
</body>
<html>

вы можете получить:

login_form = driver.find_element_by_xpath("/html/body/form[1]")

число 1 здесь указывает, что это первая форма . в вашем случае, если вы знаете форму, вы можете использовать следующее (просто измените число, чтобы оно соответствовало вашему. т.е. если это 4-й вход, измените значение на 4)

driver.find_element_by_xpath("//form[1]/input[1]")

также другая альтернатива в случаях где имя, тип и некоторые другие атрибуты не изменяются, вы можете использовать (объединяя их в цепочку, чтобы они указывали на уникальный элемент):

driver.find_element_by_xpath("//input[@name='emailAddress'][@type='email']")

, чтобы проверить, будет ли xpath работать, попробуйте поле поиска в веб-инспектор принимает xpath, и если он найдет ваш элемент, то он будет работать и в python.

см. https://selenium-python.readthedocs.io/locating-elements.html, чтобы узнать о других способах.

1 голос
/ 06 мая 2020

Вы используете любой из уникальных селекторов для поля ввода: type = "email" placeholder = "E-posta adresi" value = "" name = "emailAddress" data-componentname = "emailAddress"

xpath:

driver.find_element_by_xpath("//input[@name='emailAddress' and contains(@placeholder, 'E-posta adresi']")

css:

driver.find_element_by_css_selector("input[name='emailAddress'][type='email']")
1 голос
/ 06 мая 2020

Вы можете найти элемент, используя xpath kr css, где идентификатор или имя класса не уникальны.

driver.find_element_by_xpath("//input[@name='emailAddress']")

Или

driver.find_element_by_name('emailAddress')

Или

driver.find_element_by_css_selector("input[name='emailAddress']")

Примечание: вы также можете выполнить цепочку, если комбинация атрибутов уникальна:

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