filling in input fields with splinter

forms, html, python, splinter, testing

Solution

The problem is that your form is inside an `iframe`, use `get_iframe()` to interact with it:

with browser.get_iframe('_qq_login_frame') as iframe:
    iframe.fill("u", "foo@bar.com")

Demo to show the difference:

>>> browser = Browser('firefox')
>>> browser.visit(url)
>>> browser.find_by_name('u')
[]
>>> with browser.get_iframe('_qq_login_frame') as iframe:
...     iframe.find_by_name('u')
... 
[<splinter.driver.webdriver.firefox.WebDriverElement object at 0x102465590>]

Problem

I am trying to fill in fields on a login form with splinter. When I examine the rendered page, I see that the username input box has both a tag and a name of "u". How can I fill in this field from splinter? I tried the following: ``` from splinter import Browser url = "http://www.weiyun.com/disk/login.html" browser = Browser('firefox') browser.visit(url) browser.fill("u", "foo@bar.com") print "done" ``` But there is no such field according to the error returned: ``` ElementDoesNotExist: no elements could be found with name "u" ``` How does one fill in the input fields on pages like this using splinter?

Original source