Python selenium xpath 后代

有谁知道如何通过以下方式获得按钮:

svg[@aria-label='Like']

这是屏幕截图:

http://img4.mukewang.com/643e4595000152c306560141.jpg

我尝试了各种组合......没有任何效果。我解决了:


//button[@class='wpO6b ']

但我不想再使用它了。所以我的尝试:


//button[@class='wpO6b ']/descendant::svg[@aria-label='Like']

//button[@class='wpO6b' and descendant::svg[@aria-label='Like']]

//button[@class='wpO6b ']//svg[@aria-label='Like']

谢谢阅读!


编辑:我想点击按钮元素。


一只甜甜圈
浏览 90回答 3
3回答

翻翻过去那场雪

xpath在您的代码中尝试以下-driver.find_element_by_xpath('//*[local-name()="svg" and @aria-label="Like"]/parent::span/parent::div/parent::button').click()希望它能检测到按钮。让我知道结果。

白衣非少年

为什么这些不起作用://button[@class='wpO6b ']/descendant::svg[@aria-label='Like']//button[@class='wpO6b ']//svg[@aria-label='Like']您选择svg元素而不是按钮。您必须将svg部分放在谓词中。//button[@class='wpO6b' and descendant::svg[@aria-label='Like']]class这个几乎不错,但是由于元素的属性中有一个空格,所以button它不起作用。可以使用contains此处更安全的功能对其进行相应修复://button[contains(@class,'wpO6b') and descendant::svg[@aria-label='Like']]选择按钮的另一种方法(使用ancestor轴和更强大的谓词)://svg[@aria-label="Like" and @fill="#262626"]/ancestor::button[1][contains(@class,"wpO6b")]如果您正在处理namespaces,请使用以下表达式://*[local-name()='button'][contains(@class,'wpO6b') and descendant::*[local-name()='svg'][@aria-label='Like']]

慕勒3428872

你可以写 xpath://svg[@aria-label='Like']/ancestor::button[1]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python