【问题标题】:Accessing a form with Splinter + PhantomJS (Python)使用 Splinter + PhantomJS (Python) 访问表单
【发布时间】:2015-03-07 22:06:02
【问题描述】:

我正在尝试填写此站点上的用户名和密码框:http://www.youwager.eu/welcome/

这是相关的html:

<input type="text" class="form-control" name="customerid" id="customerid" placeholder="Account Number">

使用 firefox 时,一个简单的 browser.fill('customerid', login) 可以工作,但我无法让 phantomJS 与元素交互。它抛出以下错误:

<class 'selenium.common.exceptions.InvalidElementStateException'> , InvalidElementStateException()

重现问题的代码:

from splinter import Browser
browser=Browser('phantomjs') #=Browser() uses firefox, and works
browser.visit('http://www.youwager.eu/welcome')
browser.fill('customerid', login)

使用 Splinter 0.5.4、Selenium 2.43.0、PhantomJS 1.9.7.0

【问题讨论】:

    标签: python selenium-webdriver phantomjs splinter


    【解决方案1】:

    问题在于 PhantomJS 的默认视口大小为 400x300,并且页面会更改其布局以适应更小的宽度,其中字段不可见,因此无法通过 WebDriver API 进行交互。

    你有两个选择。您可以更改脚本以考虑媒体查询导致的不同页面布局,或者通过代码更改浏览器窗口大小。

    使用 Selenium 是这样完成的(来自 here):

    driver.set_window_size(1234, 987)
    

    根据代码(12),您似乎可以这样做:

    from splinter import Browser
    browser=Browser('phantomjs')
    browser.driver.set_window_size(1234, 987)
    browser.visit('http://www.youwager.eu/welcome')
    browser.fill('customerid', login)
    

    【讨论】:

      猜你喜欢
      • 2014-10-27
      • 1970-01-01
      • 2013-06-21
      • 1970-01-01
      • 1970-01-01
      • 2023-04-06
      • 1970-01-01
      • 2014-01-11
      • 2018-05-13
      相关资源
      最近更新 更多