Как проверить родительский элемент find_element_by_partial_link_text - PullRequest
0 голосов
/ 19 сентября 2018

Я использую селектор find_element_by_partial_link_text, чтобы найти кнопку «Далее», чтобы я мог нажать на нее и продолжить сканирование.

Однако у меня возникает проблема с тем, что иногда слово «next "также есть в других случайных ссылках на странице, что нарушает работу скрипта.

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

pagination_ul = ff.find_element_by_xpath('//*[contains(@id, "pagination-both-")]')
next_button = pagination_ul.find_element_by_partial_link_text('Next')

Итак, мой вопрос ...

Как я могу получить и сравнить родительский элемент find_element_by_partial_link_text элемента?

Другими словами, как я могу убедиться, что родительский элемент find_element_by_partial_link_text это, скажем, элемент li?

Ответы [ 2 ]

0 голосов
/ 19 сентября 2018

Попробуйте использовать ниже XPath:

driver.find_element_by_xpath('//div[starts-with(@id, "pagination-") and not(contains(@class, "hidden"))]//li[@class="a-last"]/a[text()="Next"]').click()

Это выглядит сложнее, чем поиск по текстовому содержимому, но должно работать во всех случаях

Обратите внимание, что вам может понадобиться Подождите чтобы элемент появлялся в DOM / чтобы можно было кликать

0 голосов
/ 19 сентября 2018

Если вы хотите найти родительский элемент элемента, используйте следующий подход:

Например, давайте возьмем https://www.google.com веб-страницу.Путь xpath для значка микрофона //div[@id='gs_st0'].Чтобы найти родителя этого элемента, который является окном поиска, используйте оси ' child ', как показано ниже.

//*[child::div[@id='gs_st0']]

Приведенный выше xpath извлечет васродительский элемент дочернего элемента.

В вашем случае, если xpath вашего дочернего элемента равен: //a[text()='Next'] Итак, чтобы найти родительский элемент ссылки «Далее», используйте ниже xpath:

parentElement = driver.find_element_by_xpath("//*[child::a[text()='Next']]")

...