为了账号安全,请及时绑定邮箱和手机立即绑定

Python selenium xpath 后代

Python selenium xpath 后代

一只甜甜圈 2023-04-18 15:23:30
有谁知道如何通过以下方式获得按钮:svg[@aria-label='Like']这是屏幕截图:我尝试了各种组合......没有任何效果。我解决了://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']谢谢阅读!编辑:我想点击按钮元素。
查看完整描述

3 回答

?
翻翻过去那场雪

TA贡献2065条经验 获得超13个赞

xpath在您的代码中尝试以下-

driver.find_element_by_xpath('//*[local-name()="svg" and @aria-label="Like"]/parent::span/parent::div/parent::button').click()

希望它能检测到按钮。让我知道结果。


查看完整回答
反对 回复 2023-04-18
?
白衣非少年

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']]



查看完整回答
反对 回复 2023-04-18
?
慕勒3428872

TA贡献1848条经验 获得超6个赞

你可以写 xpath:

//svg[@aria-label='Like']/ancestor::button[1]


查看完整回答
反对 回复 2023-04-18
  • 3 回答
  • 0 关注
  • 89 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信