我正在编写一个脚本来使用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”进行选择,因为其中有动态数量,因此我不知道该选择哪个。
答案 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"));
谢谢