Заполнение полей ввода сплинтером

Я пытаюсь заполнить поля в форме входа с помощью сплинтера. Когда я изучаю визуализированную страницу, я вижу, что в поле ввода имени пользователя есть тег и имя "u". Как мне заполнить это поле от сплинтера? Я попробовал следующее:

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"

Но нет такого поля в соответствии с ошибкой:

ElementDoesNotExist: no elements could be found with name "u"

Как заполнить поля ввода на подобных страницах, используя сплинтер?

1 ответ

Решение

Проблема в том, что ваша форма находится внутри iframe использовать get_iframe() взаимодействовать с ним:

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

Демо, чтобы показать разницу:

>>> 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>]
Другие вопросы по тегам