我在firefox(没有框架)中有一个页面,其中包含以下部分的html代码:
...
<div class="col-sm-6 align-right">
<a href="/efelg/download_zip" class="alert-link">
Download all results in .zip format
</a>
</div>
...
我想用selenium XPATH表达式选择。为了测试我的XPATH表达式,我为firefox安装了一个名为'TryXpath'的附加组件,以便检查我的表达式。但是,表达式似乎不正确,因为没有选择任何元素。这是表达式:
//a[text()= "Download all results in .zip format"]
但那个表达有什么问题?我发现它有不同的答案 - 但对我来说这似乎不起作用。为什么我会得到0次点击?为什么表达式错误找到我上面发布的html元素(没有框架,元素是可见的和可点击的......)
答案 0 :(得分:2)
你可以试试这个:
//a[contains(text(),'Download all results in .zip format')]
它正在我这边工作,请尝试让我知道
答案 1 :(得分:1)
您的XPath未选择显示的a
元素的原因是由于目标文字周围的前导和跟踪空白区域。虽然您可以使用{{1}如同currently upvoted and selected answer那样,请注意,当目标字符串是contains()
元素中HTML中找到的字符串的子字符串时,它也可以匹配 - 这可能是也可能不是合乎需要的。
请考虑使用a
并通过平等进行测试:
normalized-space()
这将检查//a[normalize-space()='Download all results in .zip format']
的(空格规范化的) 字符串值 是否等于 给定的文字。
另见