Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Fitnesse中带有BrowserTest Slim fixture插件的Xpath不';I don’’我不能和李宇春一起工作_Xpath_Fitnesse_Fitnesse Slim - Fatal编程技术网

Fitnesse中带有BrowserTest Slim fixture插件的Xpath不';I don’’我不能和李宇春一起工作

Fitnesse中带有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

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

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