第1行确实找到了选择器
Wait Until Element Is visible xpath=//a[contains(text(),'Download selected certificate')]
然后当我尝试获取href元素时
${url}= Get Element Attribute xpath=//a[contains(text(),'Download selected certificate')]/@href
失败了 错误说
InvalidSelectorException:消息:无效的选择器:由于以下错误,无法找到具有xpath表达式// a [contains(text(),'Download selected certificate')] /的元素: SyntaxError:无法对'Document'执行'evaluate':字符串'// a [contains(text(),'Download selected certificate')] /'不是有效的XPath表达式。
我不知道为什么因为我有一个与语法相似的工作无关的例子
${url}= Get Element Attribute xpath=//tr[contains(b/span, Jul)][${row_number}]/td[5]/span/a/@href
答案 0 :(得分:1)
在xpath中,值//a[contains(text(),'Download selected certificate')]/@href
将返回一个对象,该对象是该a
标记的href属性。
在Selenium2Library中,当调用Get Element Attribute
时,@
指定属性名称以获取特定dom elelement的值。
那么该关键字的作用是将该字符串拆分为最后一个@
,在第一部分获取一个webelement,并检索目标属性(拆分的第二部分)值。
这样做最终会导致元素的定位符为//a[contains(text(),'Download selected certificate')]/
- 并且尾随/
会使其成为无效的xpath。
解决方案很简单 - 丢失尾随斜线; e.g:
${url}= Get Element Attribute xpath=//a[contains(text(),'Download selected certificate')]@href
至于为什么你的最后一个样本有效 - 它也打败了我:)