Мне нужно взаимодействовать с элементами в классе, но число элементов в этом классе меняется каждый раз, когда я запускаю скрипт.
Чтобы дать вам контекст, веб-сайт представляет собой календарь, где мне нужно выбрать день, который я буду использовать в качестве шаблона для своей работы. Каждый раз, когда я запускаю скрипт (Ежемесячно), веб-страница с календарем обновляется и отображает текущий месяц, поэтому Selenium выбирает тот же день, что и в предыдущем месяце. Но каждый месяц день выбора Selenium имеет различное содержание, и количество элементов меняется каждый месяц. В настоящее время, например, сценарий написан для взаимодействия с 5 элементами, но в следующем месяце он не будет работать, потому что выбранный день будет иметь различное количество элементов. Поэтому каждый месяц мне приходится вручную менять скрипт, чтобы взаимодействовать с правильным количеством элементов.
Вот пример структуры элементов сайта:
<ul class="list-unstyled tags-list grid_9">
<li><!-- react-text: 185 -->Text<!-- /react-text --><i data-id="0" class="icon-cancel pointer icon12
ml5px error"></i></li>
<li><!-- react-text: 188 -->Text<!-- /react-text --><i data-id="1" class="icon-cancel pointer icon12
ml5px error"></i></li>
<li><!-- react-text: 191 -->Text<!-- /react-text --><i data-id="2" class="icon-cancel pointer icon12
ml5px error"></i></li>
</ul>
Итак, количество элементов что мне нужно взаимодействовать внутри класса 'list-unstyled tags-list grid_9' всегда меняется. Элементы с идентификаторами "0", "1" и "2". Иногда может быть 4 элемента с идентификаторами «0», «1», «2», «3», а иногда есть 2 элемента и т. Д. c.
Я пытался выяснить, как написать скрипт, в котором Selenium просматривает этот класс '' list-unstyled tags-list grid_9 ', посмотрите, сколько там элементов и выполняет -
driver.find_element_by_(xpath,class,id whatever).click()
на всех найденных там элементах.
ОБНОВЛЕНИЕ: Итак, я попробовал этот код:
tab = driver.find_element_by_css_selector('#postForm > div:nth-child(3) > ul.list-unstyled.tags-list.grid_9')
hashs = tab.find_elements_by_tag_name('li')
for element in hashs:
element.find_element_by_tag_name('i').click()
И он дал мне эту ошибку:
stale element reference: element is not attached to the page document