Я пытался получить первое сообщение об ошибке из следующего HTML-кода в тесте Fitnesse, используя 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 возвращает [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>
из трех .