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

两个属性的 xpath

两个属性的 xpath

慕无忌1623718 2021-08-19 16:05:55
我在一个元素上的两个属性的 xpath 语法方面遇到了问题。这是我的代码:WebElement dlFileBtn = driver.findElement(   By.xpath("//*[contains(@href='/file/download/id/" + downloadID + "')]"           + "/@*[title()='Download file']"));这是该元素的 HTML:<a title="Download file" alt="Right-click to download. (Hold-click Mac.)"    target="dlfile" data-isimage="false" class="download"    href="/file/download/id/1169">Download file</a>由于有两个具有相同 href 的按钮,我需要在 ID 和标题上查询它们。谢谢您的帮助!
查看完整描述

3 回答

?
蛊毒传说

TA贡献1895条经验 获得超3个赞

第一个带contains()函数的谓词有问题。

  • contains()接受两个参数。第一个参数是要测试的值,第二个是要搜索的值。它应该是[contains(@href,'/file/download/id/" + downloadID + "')]

  • 或者你可以用 [@href='/file/download/id/" + downloadID + "']

XPath 的最后一部分有几个问题: /@*[title()='Download file']

  • /@* 您不是将另一个谓词过滤器应用于匹配的元素,而是选择所有匹配的元素属性,然后

  • [title()='Download file']是一个谓词过滤器,它试图只选择title()等于“下载文件”的属性

  • 但是,没有title()节点选择器或函数来过滤这些属性

您可以使用多个谓词并将 XPath 的最后一部分调整为:

//*[@href='/file/download/id/" + downloadID + "'][@title='Download file']

您可以组合这些谓词过滤器并使用andor运算符测试同一谓词中的多个表达式。

//*[@href='/file/download/id/" + downloadID + "' and @title='Download file']


查看完整回答
反对 回复 2021-08-19
?
翻翻过去那场雪

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

您提供的元素没有可用的 ID,

您可以通过以下方式定位元素:

//a[@title='Download file' and @href='/file/download/id/1169']

标签的目标。


查看完整回答
反对 回复 2021-08-19
?
慕的地10843

TA贡献1785条经验 获得超8个赞

你能用 cssSelector 或 xpath 来检查以下选项是否适合你,试试看;


WebElement ele1 = driver.findElement(By.cssSelector("a[id='Id goes here'][title='Download file']"));

WebElement ele1 = driver.findElement(By.xpath("//a[@id='Id goes here'][@title='Download file']"));



查看完整回答
反对 回复 2021-08-19
  • 3 回答
  • 0 关注
  • 185 浏览

添加回答

举报

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