Skip to content

HTML5 specialized text fields not recognized as text fields #546

Closed

Description

@ombre42

HTML5 introduced several new input types, several of which are specialized text inputs including email, number, url, search, and tel. These input types are not recognized by Page Should Contain Textfield, Page Should Not Contain Textfield, Textfield Should Contain, or Textfield Value Should Be.
The cause is that these keywords use the constraint 'text field' and ElementFinder will filter out any input elements that do not have type 'text'. Since these inputs are still text inputs, they should be treated as such. The number type may render a spinbox control in some browsers, but still behaves like a text-type input.

Here is a test that should pass, but fails with:
Value of text field 'name=email' should have been 'selenium@xxx.yyy' but was 'None'

Open Browser    http://www.the-art-of-web.com/html/html5-form-validation/   gc
Input Text  name=email  selenium@xxx.yyy
Textfield Value Should Be   name=email  selenium@xxx.yyy

With minor modifications to elementfinder, I was able to get the above to pass.

This is being entered as a result of this: http://stackoverflow.com/questions/34169390/how-to-find-value-of-email-field-using-selenium2library

Activity

  1. aaltat commented on Dec 11, 2015

    @aaltat
    Contributor

    Have not looked the HTML 5 specification but sounds like a good idea to me. Would you like to make a pull request for it?

  2. aaltat commented on May 23, 2016

    @aaltat
    Contributor

    There has not been activity for this issue for long time and we are planning to close the old issues if they are not anymore valid ones. If you feel that this is still valid issue, could you send an update. If update is not received in a month, we will assume that this is not anymore an issues and we will close this issue.

  3. niwic commented on Jun 3, 2016

    @niwic

    I am currently having this same problem. A similar issue has been discussed here:
    SeleniumHQ/selenium-google-code-issue-archive#7291

    I have a field such as:

    <input name="numeric" type="number" value="123"/>

    Selecting it using jquery:

    Textfield Should Contain  jquery=input[name="numeric"]  123
    

    Does not find the field, and i get the error:
    TypeError: argument of type 'NoneType' is not iterable

    If i remove the type attribute from the name tag i don't get any error.

  4. rapturemachine commented on Jun 8, 2016

    @rapturemachine

    I am also getting this error with a field that has <input type="tel" inputmode="numeric"> attributes. This is my workaround:

    Verify Phone Number
        [Arguments]    ${textfield}    ${expected phone number}
        ${actual phone number}=    Get Value    ${textfield}
        Should Be Equal    ${expected phone number}    ${actual phone number}
    

    It would be good to get this issue fixed so that the workaround isn't necessary.

  5. sirex commented on Aug 23, 2016

    @sirex

    Same here. Here is my workaround:

    ${elem} =    Get WebElement    locator
    Textfield Value Should Be    ${elem}    ${value}
  6. added this to the milestone on Jun 26, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions