如何使用Selenium2Library查找电子邮件字段的值

时间:2015-12-09 01:47:22

标签: selenium selenium-webdriver robotframework

我正在使用机器人框架和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属性的值?

我做错了什么?我觉得必须存在这个或类似的关键字来测试它,而不必求助于编写自定义库。

2 个答案:

答案 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 TextInput Password从未过滤过元素标记或属性。

答案 1 :(得分:0)

我会尝试使用 Get Element Attribute 来获取名为value的属性。根据API,它应该是

accountSettingFrom_email @值