3 回答
TA贡献2065条经验 获得超13个赞
xpath
在您的代码中尝试以下-
driver.find_element_by_xpath('//*[local-name()="svg" and @aria-label="Like"]/parent::span/parent::div/parent::button').click()
希望它能检测到按钮。让我知道结果。
TA贡献1155条经验 获得超0个赞
为什么这些不起作用:
//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']]
添加回答
举报