到目前为止,这是我最好的尝试:
By.xpath(//ul/class='slds-grid'//a[title="${uniqueStringToMatch}"]).click()
获取
InvalidSelectorError:无效的选择器:无法找到带有xpath的元素 表达式// ul / class =' slds-grid slds-grid - pull-padded slds-wrap list' // a [text()=" Load Client Referrals"]因为以下原因 错误:SyntaxError:无法执行'评估' on' Document':Type 评估表达式时转换失败。
下面的树遗漏了上面的所有层次结构,因为我认为它不重要,但如果我错了,请纠正我。从树中的第一个唯一className ...
<ul class='slds-grid'>
<li class='slds-col'>
<a class="app_launcher" href="thelinkIwantToclick" title="uniqueStringToMatch"
<span class="label-ctr">
</a>
</li>
<li class='slds-col'>
<a class="app_launcher" href="thelinkIwantToclick" title="uniqueStringToMatch"
<span class="label-ctr">
</a>
</li>
<li class='slds-col'>
<a class="app_launcher" href="thelinkIwantToclick" title="uniqueStringToMatch"
<span class="label-ctr">
</a>
</li>
</ul>
li中的所有标题都是唯一的。
我正在使用W3学校学习,但这里没时间了。
(我也在寻找自己编写xpath的最快方式 - 工具或教程非常感谢!)
答案 0 :(得分:1)
我现在无法测试它,但我通常使用@语法来匹配XPath中的属性。这样的事情对你有用吗?
Download Manager
我也发现很难找到简单XPath的初级教程,最后通过反复试验学到了很多东西。还有Chrome和Firefox的扩展,它为网页中的元素生成XPath字符串,我从中学到了很多东西。
答案 1 :(得分:1)
你可能比阅读W3C XPath 1.0规范要糟糕得多:与后来的规格相比,它的内容简短且可读性
当然,与尝试通过反复试验或复制粘贴示例进行学习相比,您将节省大量时间。虽然每个人都有自己的学习方式。
但是当我看到像
这样的东西时//ul/class='slds-grid'//a[title="${uniqueStringToMatch}"]
我只是想知道你在想什么:你显然没有掌握路径和步骤的核心概念。
XPath中有两个基本操作。
A / B表示找到A选择的东西,然后从那里开始,然后找到B选择的东西。
A [P]表示查找A选择的内容,然后删除那些与条件P不匹配的内容。
你的class='slds-grid'
显然是一个过滤条件,并且(因为类和标题是属性而不是元素)所以它应该是
//ul[@class='slds-grid']//a[@title="${uniqueStringToMatch}"]
顺便说一下,XPath几乎与正则表达式无关。
答案 2 :(得分:0)