我正在使用机器人框架和Selenium2Library库为Web应用程序编写回归测试。我有一个简单的测试,它会更改"帐户设置的所有字段"输入表格(想想用户名,密码,电子邮件等),然后重新访问页面并确保保存所有数据。像这样:
*** Test Cases ***
Sample Test
Change All Account Details
New Account Details Should Be Saved
*** Keywords ***
Change All Account Details
Navigate to Account Page
Input Text accountSettingFrom_firstname Test
Input Text accountSettingFrom_lastname Dummy
Input Text accountSettingFrom_email new_email@example.com
# etc etc, eventually save the form
New Account Details Should Be Saved
Go To ${ACCOUNT_URL}
Textfield Value Should Be accountSettingFrom_firstname Test
Textfield Value Should Be accountSettingFrom_lastname Dummy
Textfield Value Should Be accountSettingFrom_email new_email@example.com
运行此测试时,我在最后一步(Textfield Value Should Be accountSettingFrom_email new_email@example.com
)上收到以下错误:Value of text field 'accountSettingFrom_email' should have been 'new_email@example.com' but was 'None'
我在该步骤开始之前拍摄了屏幕截图,并且我添加了一个停顿并手动确认了{accountertingFrom_email' accountSettingFrom_email'的value
属性。的确是' new_email@example.com'。检查发生时元素的HTML:
<input type="email" name="accountSettingFrom[email]" value="new_email@example.com" class="foo bar" required="required" tabindex="3" maxlength="128" url="/foo/bar" userid="foobar" id="accountSettingFrom_email">
您会注意到前两个Textfield Value Should Be
关键字通过了。我可以在三个元素之间辨别的唯一区别是&#39; accountSettingFrom_email&#39;是type="email"
而不是type="text"
,但如果关键字成功找到了该元素,那么为什么它不能获取value
属性的值?
我做错了什么?我觉得必须存在这个或类似的关键字来测试它,而不必求助于编写自定义库。
答案 0 :(得分:5)
你在Selenium2Library中遇到了一些错误。创建Selenium2Library时,HTML5未被批准。在内部,库会过滤掉您的元素,因为它的类型不是&#39; text&#39; (在HTML5之前有意义)。 Textfield Value Should Be
只有具有标记名称输入和属性值&#39; text&#39;才能找到您的元素。对于类型。
见https://github.com/robotframework/Selenium2Library/issues/546
同样由于Textfield Value Should Be
的实现方式,你得到的错误让你认为找到了元素,而实际上并不是因为它被过滤掉了。
见https://github.com/robotframework/Selenium2Library/issues/547
相比之下,Input Text
和Input Password
从未过滤过元素标记或属性。
答案 1 :(得分:0)
我会尝试使用 Get Element Attribute 来获取名为value
的属性。根据API,它应该是
accountSettingFrom_email @值