如何在不考虑div索引的情况下识别XPath



我正在编写一个从网站上抓取信息的python代码,但我必须首先清除一些弹出的cookie。要单击右侧按钮,我需要它们的XPaths(据我所知(。问题是XPath的一部分每次都会更改,我不知道如何找到它们,因为它们实际上没有任何属性,比如ID之类的。

这是按钮的HTML:

<button class="Button__StyledButton-a1qza5-0 lcqSKB" style="visibility: visible; background-color: rgb(12, 44, 91);">Lees meer om voorkeuren te accepteren</button>

这是我现在使用的命令:

driver.find_element_by_xpath('/html/body/div[14]/div[1]/div[3]/button').click()

这就是XPath:

/html/body/div[VARIABLE]/div[1]/div[3]/button

其中VARIABLE每次都会更改,所以我更改了14。

这个XPath,

//button[.='Lees meer om voorkeuren te accepteren']

将选择字符串值为'Lees meer om voorkeuren te accepteren'的所有按钮,与DOM层次结构中的布局或位置无关。

您可以通过比较空白规范化字符串值使其更加健壮:

//button[normalize-space()='Lees meer om voorkeuren te accepteren']

这将在删除前导和尾随空格并将多个连续的内部空格折叠为单个空格后,对字符串值进行测试。

如果你像现在这样使用完整的xPath,你会一直遇到这样的问题。更好的方法是找出另一种/更短的方法来获得该元素。

没有URL很难进行测试,但请尝试其中一种:

driver.find_element_by_css_selector("Button__StyledButton-a1qza5-0.lcqSKB")
driver.find_element_by_css_selector("Button__StyledButton-a1qza5-0")

相关内容

最新更新