Динамический и меняющийся XPATH - PullRequest
0 голосов
/ 30 сентября 2019

Я пишу скрипт для навигации по веб-странице с использованием селена. Я обычно просто нахожу и выбираю все элементы на основе XPATH. Тем не менее, один из элементов xpath, кажется, меняется немного каждую неделю или около того. Как я могу выбрать или найти этот элемент, не подчиняясь динамическому XPATH?

Вот как я сейчас выбираю элемент:

driver.find_element_by_xpath('//*[@id="footable_213701"]/tfoot/tr/td/div/ul/li[15]/a')

Вот элемент и атрибуты

<li class="footable-page-nav" data-page="next">
<a class="footable-page-link" href="#">></a>
</li>

Мне нужно нажать кнопку «>», чтобы перейти на следующую страницу. Я не могу выбрать с помощью class = "footable-page-link", потому что их число динамическое, поэтому я не знаю, какой из них выбрать.

Ответы [ 2 ]

2 голосов
/ 30 сентября 2019

Есть несколько способов попробовать его в xpath,

1) Нажмите на якорь на странице данных - Далее

//li[@data-page="next"]/a

2) Нажмите '>'используя это как текст,

//li[@class="footable-page-nav"]/a[contains(.,'>')]

или просто,

//a[contains(.,'>')]
0 голосов
/ 30 сентября 2019

Лучший способ написать XPATH - это избегать использования числовых значений (т. Е. Идентификаторов с числовыми значениями), что означает, что они являются динамическими по своей природе, и li[15] здесь вы ссылаетесь на 15-й элемент списка, который может измениться из-за добавления или удаленияпредмет, который потерпит неудачу в вашей XPATH.

попробуйте ниже,

driver.findElement(By.XPATH("//li[@class='footable-page-nav']/a"));

Спасибо,

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