我正在看着一棵巨大的 dom 树。使用 NodeJS/Selenium,我特别需要在 a 标签中按标题查找,并且需要单击关联的 href。我对正则表达式非常陌生,并且已经收到很多错误。
这是我迄今为止最好的尝试:
By.xpath(//ul/class='slds-grid'//a[title="${uniqueStringToMatch}"]).click()
获取
InvalidSelectorError: invalid selector: Unable to locate an element with the xpath expression //ul/class='slds-grid slds-grid--pull-padded slds-wrap list'//a[text()="Load Client Referrals"] because of the following error: SyntaxError: Failed to execute 'evaluate' on 'Document': Type conversion failed while evaluating the expression.
下面的树省略了上面的所有层次结构,因为我认为这并不重要,但如果我错了,请纠正我。从树中第一个唯一的类名开始...
<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 的最快方法 - 工具或教程将非常感激!)
最佳答案
我现在无法测试它,但我通常使用@语法来匹配XPath中的属性。这样的东西对你有用吗?
By.xpath("//ul[@class='slds-grid']//a[@title='${uniqueStringToMatch}']").click()
我还发现很难找到简单 XPath 的初级教程,最终通过反复试验学到了很多东西。还有一个适用于 Chrome 和 Firefox 的扩展,它可以为网页中的元素生成 XPath 字符串,我从中学到了很多东西。
关于javascript - InvalidSelectorError,需要帮助定义我的 xpath 选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44009201/