为什么 Robot Framework、Selenium2Library、Element Text Should Be 关键字不能正确验证输入元素文本?
Why Robot Framework, Selenium2Library, Element Text Should Be keyword does not verify input element text properly?
我在测试基于 https://www.freecodecamp.org/learn/responsive-web-design/responsive-web-design-projects/build-a-survey-form 为自学目的创建的简单调查 html 页面时遇到问题。
当我尝试使用 Element text should be
关键字检查输入字段是否已填充时,它不断抛出错误 The text of element 'id=name' should have been 'Test Name' but it was ''
,但在测试期间完成的 selenium 屏幕截图显示文本输入正确。
为了调试问题,我注释了大部分代码并尝试仅测试一个输入字段。
survey.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}
我使用:
Python3.7.5
robotframework-selenium2library 3.0.0
我在版本 79、81、83 中使用 Chrome 测试了代码。
Get Element Text
returns 节点内的文本数据,例如"<element>the text inside here</element>"
,而您的目标是 input
元素,显然是输入的值。
该(值)不存储在节点的内容中,而是存储在名为 "value" 的属性中;然后你通过 Get Element Attribute
:
检索它
${value}= Get Element Attribute id=name value
然后您可以使用 Should Be Equal As Strings
或其他类似关键字来确定它是您需要的任何内容。
我在测试基于 https://www.freecodecamp.org/learn/responsive-web-design/responsive-web-design-projects/build-a-survey-form 为自学目的创建的简单调查 html 页面时遇到问题。
当我尝试使用 Element text should be
关键字检查输入字段是否已填充时,它不断抛出错误 The text of element 'id=name' should have been 'Test Name' but it was ''
,但在测试期间完成的 selenium 屏幕截图显示文本输入正确。
为了调试问题,我注释了大部分代码并尝试仅测试一个输入字段。
survey.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}
我使用:
Python3.7.5
robotframework-selenium2library 3.0.0
我在版本 79、81、83 中使用 Chrome 测试了代码。
Get Element Text
returns 节点内的文本数据,例如"<element>the text inside here</element>"
,而您的目标是 input
元素,显然是输入的值。
该(值)不存储在节点的内容中,而是存储在名为 "value" 的属性中;然后你通过 Get Element Attribute
:
${value}= Get Element Attribute id=name value
然后您可以使用 Should Be Equal As Strings
或其他类似关键字来确定它是您需要的任何内容。