Заполнение полей ввода сплинтером
Я пытаюсь заполнить поля в форме входа с помощью сплинтера. Когда я изучаю визуализированную страницу, я вижу, что в поле ввода имени пользователя есть тег и имя "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>]