6

ログインフォームのフィールドにスプリンターで入力しようとしています。レンダリングされたページを調べると、ユーザー名入力ボックスに「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"

splinter を使用して、このようなページの入力フィールドにどのように入力しますか?

4

1 に答える 1

3

問題は、フォームが 内にあり、それを操作する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>]
于 2014-05-26T19:19:52.233 に答える