Почему Robot Framework, Selenium2Library, ключевое слово Element Text Should Be не проверяет текст элемента ввода должным образом? - PullRequest
2 голосов
/ 26 мая 2020

Я столкнулся с проблемой при тестировании простой страницы опроса html, созданной для самообучения на основе https://www.freecodecamp.org/learn/responsive-web-design/responsive-web-design-projects/build-a-survey-form. Когда я пытаюсь проверить, заполнено ли поле ввода с помощью ключевого слова Element text should be, он постоянно выдает ошибку The text of element 'id=name' should have been 'Test Name' but it was '', но скриншот селена, сделанный во время теста, показывает, что текст был введен правильно.

Input filled properly

Для устранения проблемы я прокомментировал большую часть кода и попробовал протестировать только одно поле ввода.

опрос. html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Survey Form</title>
</head>
<body>
<h1 id="title">Survey Form</h1>

<p id="description">Thank you for taking the time</p>

<div class="container">
    <form id="survey-form">
        <div>
            <label for="name" id="name-label">Name:</label>
            <input type="text" name="name" id="name" placeholder="Enter your name"/>
        </div>

    </form>
</div>
</body>
</html>

Тесты написаны с использованием BDD соглашения.

Survey_tests.robot

** Settings **
Library           Selenium2Library
Test Teardown     Close Browser

** Variables **
${SURVEY PAGE}    an/absolute/path/to/survey.html
${BROWSER}        Chrome

** Test Cases **
Check name input
  When Survey Page is opened
  Given User fill the name field with 'Test Name'
  Then Element name contains 'Test Name'


** Keywords **
Survey Page is opened
    Open Browser                       ${SURVEY PAGE}    ${BROWSER}

User fill the name field with '${name}'
    Input Text                         id=name           ${name}

Element name contains '${name}'
    Element Text Should Be             id=name           ${name}

Я использую: Python 3.7.5
robotframework-selenium2library 3.0.0
и я тестировал код с Chrome в версиях 79, 81, 83.

1 Ответ

2 голосов
/ 27 мая 2020

Get Element Text возвращает текстовые данные внутри узла, например "<element>the text inside here</element>", в то время как то, что вы нацеливаете, является элементом input и, очевидно, введенным значением.
Это (значение) не сохраняется внутри узла контент, но находится в атрибуте, называемом «значение»; и вы получаете его через Get Element Attribute:

${value}=    Get Element Attribute    id=name    value

Затем вы можете подтвердить, что это то, что вам нужно, с помощью Should Be Equal As Strings или других подобных ключевых слов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...