Поиск внутри элемента другого элемента с питоном и селеном - PullRequest
0 голосов
/ 08 ноября 2019

Допустим, у меня есть этот вид HTML

<form method post="some.page">
.
.
<span class="warning"
  <img class"something_img" src="some.jpg" title="jpg title">
</span>
.
.
<p class="input">
 <input class="input" type="submit" value="Click Here" name="action">
</p>
.
.
</form>

<form method post="some.page">
.
.
<p class="input">
 <input class="input" type="submit" value="Click Here" name="action">
</p>
.
.
</form>

Шутка в том, что страница состоит из множества форм, но мне нужно найти только кнопки отправки в формах, где класс «предупреждение»существует и пропускает вводы там, где его нет .. их может быть много! некоторые из них имеют класс «warning», а некоторые нет, и мне нужно щелкнуть по первому, у которого он есть ... (скрипт выполнит его, и вернется, когда будет сделано главноестраница, где он снова должен искать ввод формы, где предупреждение ... это будет на следующей форме, так как сценарий решит проблему со старым предупреждением)

Я не уверен, как найти этонадежно с селеном и питоном.

1 Ответ

1 голос
/ 08 ноября 2019

Я бы сначала отфильтровал все формы, которые не имеют элемента с классом 'warning', а затем получил бы кнопку (и) отправки в допустимых формах через их XPath s:

# find all forms
forms = driver.find_elements_by_tag_name("form")
# create list of forms that only contain elements with 'warning' class
forms_with_warnings = [form for form in forms if len(form.find_elements_by_class_name("warning")) > 0]
# create list of buttons and fill it with found inputs in valid forms
buttons = []
for form in forms_with_warnings:
    buttons.extend(form.find_elements_by_xpath('//input[type="submit"]'))

Надеюсь, что-то подобное поможет! Вы также можете выполнить фильтрацию с помощью функции фильтра вместо понимания списка;с чем вам удобнее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...