注意:硒或API包装碎片中的硒溶液是可以的!在
我在和iframes的互动中遇到了问题Twitter.com使用Python的splinterapi。在
例如
with Browser('firefox', profile_preferences= proxySettings) as browser:
#...login and do other stuff here
browser.find_by_id('global-new-tweet-button').click()
这会打开一个弹出框来输入tweet。在
如何使用Splitter与这个新盒子交互: 1) 填写信息 2) 点击“推特”(提交) …当然是程序化的。在
我尝试检查元素,但它似乎没有嵌套在iframe中,但它的目标是iframe。所以我不确定如何在这个弹出窗口中找到/与元素交互。在
我尝试手动输入消息,然后以编程方式单击tweet按钮:
^{pr2}$…但我得到了一个错误:
ElementNotVisibleException: Message: Element is not currently visible and so may not be interacted with
Stacktrace:
at fxdriver.preconditions.visible (file:///var/folders/z1/8rqrglqn2dj8_yj1z2fv5j700000gn/T/tmppRsJvd/extensions/fxdriver@googlecode.com/components/command-processor.js:10092)
at DelayedCommand.prototype.checkPreconditions_ (file:///var/folders/z1/8rqrglqn2dj8_yj1z2fv5j700000gn/T/tmppRsJvd/extensions/fxdriver@googlecode.com/components/command-processor.js:12644)
at DelayedCommand.prototype.executeInternal_/h (file:///var/folders/z1/8rqrglqn2dj8_yj1z2fv5j700000gn/T/tmppRsJvd/extensions/fxdriver@googlecode.com/components/command-processor.js:12661)
at DelayedCommand.prototype.executeInternal_ (file:///var/folders/z1/8rqrglqn2dj8_yj1z2fv5j700000gn/T/tmppRsJvd/extensions/fxdriver@googlecode.com/components/command-processor.js:12666)
at DelayedCommand.prototype.execute/< (file:///var/folders/z1/8rqrglqn2dj8_yj1z2fv5j700000gn/T/tmppRsJvd/extensions/fxdriver@googlecode.com/components/command-processor.js:12608)
我很想用Splitter来实现我的目标,所以请不要提供替代品,我知道还有其他方法。 提前谢谢你!在
您的主要问题似乎是您将
browser.find_by_xxx
的结果视为元素对象,而实际上它是一个元素容器对象(即webdriver元素的列表)。在如果我显式引用元素,则写入字段对我有效:
这会给我写下“分裂的例子”。在
按钮单击失败,因为您的css路径返回三个元素的列表,并且您隐式地单击第一个隐藏元素。在我的测试中,您实际想要单击的元素是列表中的第二个元素:
^{pr2}$当我显式地单击第二个元素时,它不会抛出错误,并且按钮被单击。在
如果添加到css路径,则可以将结果缩小到仅可见模式下的按钮:
注意这里没有抛出异常。在
相关问题 更多 >
编程相关推荐