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']
您可以组合这些谓词过滤器并使用and
和or
运算符测试同一谓词中的多个表达式。
//*[@href='/file/download/id/" + downloadID + "' and @title='Download file']
TA贡献2065条经验 获得超13个赞
您提供的元素没有可用的 ID,
您可以通过以下方式定位元素:
//a[@title='Download file' and @href='/file/download/id/1169']
标签的目标。
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']"));
添加回答
举报