python - 用碎片填充输入字段

标签 python html forms testing splinter

我正在尝试使用 splinter 填写登录表单上的字段。当我检查呈现的页面时,我看到用户名输入框有一个标签和一个名称“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 填写此类页面上的输入字段?

最佳答案

问题是您的表单位于 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>]

关于python - 用碎片填充输入字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23876363/

相关文章:

python - 如何正确地重新投影具有多个几何列的数据框?

python - 为什么我的代码继续使用 else 语句?

javascript - JS - 移动图像,暂停设定时间,然后将图像移回

PHP 按顺序显示错误消息并重新显示正确的字段

python - 如何在单行中按模对列表进行排序

python - 搜索具有特定单词的行

html - 推特 Bootstrap 3 : including img-responsive class seems to be resizing my container-fluid divs?

html - 在 Chrome 和 Safari 的下一行列表项中使用文本溢出省略号链接

node.js - 我们如何在 expressjs 服务器上使用 body-parser 从表单中获取单选按钮值?

c# - ASP MVC 表单调用特定操作而不是重定向但更新原始页面