Xpath in Fitnesse with BrowserTest 苗条夹具插件不适用于 ul li



我一直在尝试从以下消息中获取第一条错误消息html在Fitnesse测试中使用BrowserTest Slim fixture。

<div class="validation-errors">
  <ul>
    <li>Enter your code.</li>
    <li>Enter your username.</li>
    <li>Enter your password.</li>
  </ul>
</div>

我已经尝试了以下Xpath:

//div[@class='validation-errors']/ul/li[1]/text()
//div[@class='validation-errors']/ul/li[1]
//div[@class='validation-errors']/ul/li

第一个xpath返回[null],其中第二个和第三个返回[0]

预期结果为Enter your code.

如果我完全退出

//div[@class='validation-errors']/ul

然后返回

[Enter your code.
Enter your username.
Enter your password.]

因此,无论哪种方式,我的测试都会在只查找第一条错误消息的地方失败。我在在线xpath测试人员上尝试过xpath查询,在那里它似乎可以按预期工作。

以下是一个适合性测试用例示例:

|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.                  |

可能我错过了一些显而易见的东西,但我尝试了几个小时都没有成功,我想我会在这里发布这篇文章,以防有人有类似的经历,或者可以提供一个解决方案来获得三个中第一个<li>的价值。

不幸的是,所有<li>元素在HTML中都有一个隐式的"value"属性,而这正是BrowserTest的value of在2.5.1版本之前返回的属性。因此,您的第二个和第三个XPaths选择您要查找的项目是绝对正确的。遗憾的是,返回的值不是您所期望/想要的值。如果您在2.5.1版本中再次尝试,它们应该可以工作。


背景

value of最初被设计为返回输入元素的值(在其"value"属性中),并具有回退行为,因此如果找到的元素具有"value"特性,则返回其text()。这在大多数情况下都很好,但对于具有值属性的<li>来说是一件痛苦的事情,即使页面的源代码中没有值属性。2.5.1之前,BrowserTest没有允许您获取<li>文本的方法。

尝试其中一个-通过id和所有级别的长级别或直接进行的短级别:

xpath=//div[@class="validation-errors"]/ul/li[text()="Enter your code."]
xpath=//li[text()="Enter your code."]

最新更新