动态且不断变化的XPATH

时间:2019-09-30 15:07:37

标签: python selenium xpath

我正在编写一个脚本来使用Selenium浏览网页。我通常只是基于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 个答案:

答案 0 :(得分:2)

有两种方法可以在xpath中进行尝试,

1)单击基于数据页的锚-下一步

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

2)单击“>”,将其用作文本,

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

或者简单地

//a[contains(.,'>')]

答案 1 :(得分:0)

编写XPATH的最佳方法是避免使用数字值(即带有数字值的id),这意味着它们本质上是动态的,li[15]在这里指的是第15个列表项,该列表项可能会由于添加或删除而发生变化项,这会使您的XPATH失败。

尝试以下,

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

谢谢