带有 BrowserTest Slim 夹具插件的 Fitnesse 中的 Xpath 不适用于 ul li
Xpath in Fitnesse with BrowserTest Slim fixture plugin doesn't work with ul li
我一直在尝试从以下内容中找出第一条错误消息
html 在 Fitnesse test using BrowserTest 纤薄夹具中。
<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 returns [null]
其中第二个和第三个 returns [0]
.
预期的结果是Enter your code.
如果我把li完全拿出来
//div[@class='validation-errors']/ul
然后它 returns
[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. |
可能是我遗漏了一些明显的东西,但我试了几个小时都没有成功,我想我会 post 在这里,以防有人有类似的经历或可以提供解决方案来获得三个中第一个 <li>
的值。
尝试其中之一 - 长的通过 id 和所有级别或短的直接进入:
xpath=//div[@class="validation-errors"]/ul/li[text()="Enter your code."]
xpath=//li[text()="Enter your code."]
不幸的是,所有 <li>
元素在 HTML 中都有一个隐含的 'value' 属性,这就是 BrowserTest 的 value of
returning,直到版本 2.5 .1.因此,您的第二个和第三个 XPath 对于 select 您要查找的项目是绝对正确的。不幸的是,returned 的值不是您 expect/want 的值。
如果您在 2.5.1 版本中再次尝试它们,它们应该可以工作。
背景
value of
最初设计为 return 输入元素的值(在它们的 'value' 属性中),并且具有回退行为,因此如果找到的元素执行 'value' 属性其 text()
是 returned。这在大多数情况下工作得很好,但是对于 <li>
来说是一个痛苦,即使页面源中有 none 也有一个 value 属性。
在 2.5.1 之前,BrowserTest 没有允许您获取 <li>
文本的方法。
我一直在尝试从以下内容中找出第一条错误消息 html 在 Fitnesse test using BrowserTest 纤薄夹具中。
<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 returns [null]
其中第二个和第三个 returns [0]
.
预期的结果是Enter your code.
如果我把li完全拿出来
//div[@class='validation-errors']/ul
然后它 returns
[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. |
可能是我遗漏了一些明显的东西,但我试了几个小时都没有成功,我想我会 post 在这里,以防有人有类似的经历或可以提供解决方案来获得三个中第一个 <li>
的值。
尝试其中之一 - 长的通过 id 和所有级别或短的直接进入:
xpath=//div[@class="validation-errors"]/ul/li[text()="Enter your code."]
xpath=//li[text()="Enter your code."]
不幸的是,所有 <li>
元素在 HTML 中都有一个隐含的 'value' 属性,这就是 BrowserTest 的 value of
returning,直到版本 2.5 .1.因此,您的第二个和第三个 XPath 对于 select 您要查找的项目是绝对正确的。不幸的是,returned 的值不是您 expect/want 的值。
如果您在 2.5.1 版本中再次尝试它们,它们应该可以工作。
背景
value of
最初设计为 return 输入元素的值(在它们的 'value' 属性中),并且具有回退行为,因此如果找到的元素执行 'value' 属性其 text()
是 returned。这在大多数情况下工作得很好,但是对于 <li>
来说是一个痛苦,即使页面源中有 none 也有一个 value 属性。
在 2.5.1 之前,BrowserTest 没有允许您获取 <li>
文本的方法。