Селен дает разные результаты - PullRequest
0 голосов
/ 07 марта 2019

У меня возникла небольшая проблема с использованием Selenium с python.Есть страница, которую я очищаю, и я получаю доступ к дочерним элементам родительского элемента.Однако каждый раз, когда я запускаю сценарий, не всегда гарантируется, что я смогу получить детей.

Так, например, у меня есть:

filters = driver.find_element_by_class_name("classname")

filters_children = filters.find_elements_by_class_name("anotherclassname")

И я печатаю filters_children [1] просто для уверенности.

Около 60% будет работать нормально, и filters_children будет иметь список дочерних элементов.Однако остальные 40% будут иметь NoneType, поэтому не смогут захватывать элементы.

Я пытался использовать спящий режим до 10 секунд после отображения страницы, но это не помогломного всего.

1 Ответ

0 голосов
/ 07 марта 2019

Ваш родительский класс может быть слишком широким, и иногда вы можете получить другой элемент, тогда ваш второй запрос не сможет найти правильного потомка.

При поиске с помощью селектора css вы можете объединить несколько вложенных классовиспользуя пробелы между ними.Затем вы можете объединить вложенный запрос в один.

Также я предлагаю вам использовать wait в этом случае, чтобы обеспечить присутствие элемента.Сравните со сном, он будет периодически отправлять запрос на страницу, пока не найдет ваш запрос.

from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait

wait = WebDriverWait(driver, '30')
wait.until(EC.presence_of_all_elements_located("css selector", ".classname .anotherclassname")))

Если элемент также должен быть видимым, измените sence_of_all_elements_located на visibility_of_any_elements_located

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