Селен найти динамический элемент с динамическим путем - PullRequest
0 голосов
/ 26 июня 2019

Я пишу о программе Селен, чтобы очистить сайт, который находится за логином.Однако все, кроме текста заполнителя, является динамическим, включая селекторы css, xpath и т. Д. Есть ли способ выбрать видимым текстом без Xpath?

фрагмент HTML:

<form class="un-form un-login-form "><div class="un-login-form__change-school form-group">Name<br><small>D-26871, Russellstr. 33</small><br><a>Schule wechseln</a></div><div class="form-group"><input type="text" value="" placeholder="Benutzer" id="732de780-8f7b-41f6-98ba-c73503c93fcc" class="form-control"></div><div class="form-group"><input type="password" value="" placeholder="Passwort" id="5d7bc08a-7301-4348-82f1-a16e9e657720" class="form-control"></div><div class="un-login-buttons un-login-form__buttons btn-group"><button type="submit" title="Login" class="btn btn-primary">Login</button></div><div class="un-login-form__links"><a>Passwort vergessen?</a><br></div></form>

мой код:

paswd = driver.find_element_by_xpath("//input[@placeholder='Passwort']")

Таким образом, из-за изменяющегося xpath я всегда получаю ошибку, не найденную также из-за того, что все классы названы одинаково, он не может фокусировать элемент

Ответы [ 3 ]

0 голосов
/ 26 июня 2019

Пожалуйста, попробуйте driver.findElement (By.tagName ("")

0 голосов
/ 27 июня 2019

Хорошо, теперь этот вид XPATH сделал это для меня: // * [@ placeholder = 'Benutzer']

0 голосов
/ 26 июня 2019

Поскольку id является динамическим, вы можете использовать другие атрибуты и использовать один из следующих Стратегий локатора :

  • Использование css_selector:

    driver.find_element_by_css_selector("input.form-control[placeholder='Passwort']").send_keys("3agle")
    
  • Использование xpath:

    driver.find_element_by_xpath("//input[@class='form-control' and @placeholder='Passwort']").send_keys("3agle")
    
...