使用RSelenium点击自定义mat-icon元素的XPath选择正确性咨询
错误原因
你的原有写法混淆了XPath与CSS选择器的语法规则:XPath的@class属性匹配是直接匹配属性的完整文本,不能使用.分隔多个类名(.是CSS选择器的类名分隔语法)。
正确实现方式
方案1(最推荐,匹配唯一独有属性,不受类名变化影响)
该mat-icon元素有唯一的fontset="icon-arrow-down-tail"属性,直接匹配该属性即可,精准度最高:
down <- remDr$findElement(using="xpath", value="//mat-icon[@fontset='icon-arrow-down-tail']")
方案2(匹配完整class属性值)
如果要使用class属性匹配,将XPath中的.替换为实际的空格即可:
down <- remDr$findElement(using="xpath", value="//mat-icon[@class='mat-icon notranslate icon-arrow-down-tail mat-icon-no-color']")
方案3(多条件模糊匹配class,不受类名顺序、额外空格/类名影响)
如果页面可能动态调整类名顺序或新增类,用多条件匹配更稳妥:
down <- remDr$findElement(using="xpath", value="//mat-icon[contains(@class, 'mat-icon') and contains(@class, 'icon-arrow-down-tail')]")
额外排查建议
如果调整选择器后仍无法找到元素,可增加显式等待避免元素延迟加载导致的匹配失败:
# 最长等待10秒直到目标元素加载完成 down <- remDr$waitFor(using = "xpath", value = "//mat-icon[@fontset='icon-arrow-down-tail']", timeout = 10000)
内容的提问来源于stack exchange,提问作者missgwolf
相关产品推荐
相关产品推荐

