Fitnesse中带有BrowserTest Slim fixture插件的Xpath不';I don’’我不能和李宇春一起工作
我一直在尝试从以下内容中获取第一条错误消息 使用Slim fixture测试中的htmlFitnesse中带有BrowserTest Slim fixture插件的Xpath不';I don’’我不能和李宇春一起工作,xpath,fitnesse,fitnesse-slim,Xpath,Fitnesse,Fitnesse Slim,我一直在尝试从以下内容中获取第一条错误消息 使用Slim fixture测试中的html <div class="validation-errors"> <ul> <li>Enter your code.</li> <li>Enter your username.</li> <li>Enter your password.</li> </ul> </d
<div class="validation-errors">
<ul>
<li>Enter your code.</li>
<li>Enter your username.</li>
<li>Enter your password.</li>
</ul>
</div>
第一个xpath返回[null]
,其中第二个和第三个xpath返回[0]
预期结果是输入您的代码。
如果我把李彻底干掉
//div[@class='validation-errors']/ul
然后它回来了
[Enter your code.
Enter your username.
Enter your password.]
因此,无论哪种方式,我的测试都会失败,因为它只查找第一条错误消息。
我已经在在线xpath测试人员上尝试了xpath查询,它似乎按照预期工作
以下是fitnesse测试用例示例:
|table template|try to login |
|open |https://my.url.com/login? |
|enter |@{code} |as |Code |
|enter |@{username}|as |Username |
|enter |@{password}|as |Password |
|click |Login |
|$message=|value of |xpath=//div[@class='validation-errors']/ul/li[1]|
|storyboard|browser test|
|try to login |
|code |username |password |message? |
| | | |Enter your code. |
可能是我遗漏了一些明显的东西,但我已经尝试了几个小时,但没有任何成功。我想我会在这里发布这篇文章,以防有人有类似的经历,或者可以提供一个解决方案,从这三个问题中获得第一个
试试下面的一个——长的一个穿过id和所有级别,或者短的一个直接穿过:
xpath=//div[@class="validation-errors"]/ul/li[text()="Enter your code."]
xpath=//li[text()="Enter your code."]
不幸的是,所有
元素在HTML中都有一个隐式的“value”属性,这就是BrowserTest的值在2.5.1版之前返回的值。因此,您的第二个和第三个XPath在选择您要查找的项目时是绝对正确的。很遗憾,返回的值不是您期望的值。
如果您在2.5.1版中再次尝试,它们应该可以工作
背景
value of
最初设计用于返回输入元素的值(位于其“value”属性中),并且具有回退行为,因此如果找到的元素具有“value”属性,则返回其text()。这在大多数情况下都很有效,但是对于
来说是一件痛苦的事情,因为它有一个value属性,即使页面的源代码中没有。
在2.5.1之前,BrowserTest没有一种方法允许您获取
的文本 谢谢Pirre,不幸的是这也不起作用。我相信我已经试过了,但自从你提到它,我又试了一次。返回预期的[0][输入您的代码。]
@s-rod我编辑了答案-重试。也许您用错误的方式声明xpath?我不知道IDE中的语法,但是这些xpath选择器在Firebug Mozilla和HTML中的Devtools Chrome中工作。但它似乎是有效的,因为正如您所说,它返回了:[0]预期的[输入代码]。正如我在原始问题中提到的,xpath没有错,因为它确实正确工作,并在多个在线xpath测试程序中返回了预期值,我尝试了它,包括您之前建议的那些测试程序。但复制并粘贴到我的Fitnesse wiki页面时,情况并非如此。无论如何,我所做的是通过忽略xpath中的
来解决这个问题,即//div[@class='validation-errors']/ul
,它为我提供了所有/任何一条错误消息的列表(如适用)。然后,我不是针对列表中的第一个错误进行断言,而是针对所有消息进行断言,这可能是正确的方法,因为测试就是这样,我们是否获得了所有预期的验证消息。@s-rod这样您只获取了所有错误,但我知道您只需要一个-第一个,但是播放,很高兴你解决了问题。谢谢@FriedHoeben。刚刚看到你的评论。。太好了:-)
xpath=//div[@class="validation-errors"]/ul/li[text()="Enter your code."]
xpath=//li[text()="Enter your code."]