使用 Splinter + PhantomJS 访问表单 (Python)
Accessing a form with Splinter + PhantomJS (Python)
我正在尝试填写此站点上的用户名和密码框:http://www.youwager.eu/welcome/
这是相关的 html:
<input type="text" class="form-control" name="customerid" id="customerid" placeholder="Account Number">
一个简单的 browser.fill('customerid', login) 在使用 firefox 时有效,但我无法让 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
问题是 PhantomJS 的视口大小默认为 400x300,页面会更改其布局以获得更小的宽度,其中字段不可见,因此无法通过 WebDriver 进行交互 API。
你有两个选择。您可以更改脚本以考虑由于媒体查询而导致的不同页面布局,或者您可以通过代码更改浏览器 window 大小。
对于 Selenium,这是这样完成的(来自 here):
driver.set_window_size(1234, 987)
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)
我正在尝试填写此站点上的用户名和密码框:http://www.youwager.eu/welcome/
这是相关的 html:
<input type="text" class="form-control" name="customerid" id="customerid" placeholder="Account Number">
一个简单的 browser.fill('customerid', login) 在使用 firefox 时有效,但我无法让 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
问题是 PhantomJS 的视口大小默认为 400x300,页面会更改其布局以获得更小的宽度,其中字段不可见,因此无法通过 WebDriver 进行交互 API。
你有两个选择。您可以更改脚本以考虑由于媒体查询而导致的不同页面布局,或者您可以通过代码更改浏览器 window 大小。
对于 Selenium,这是这样完成的(来自 here):
driver.set_window_size(1234, 987)
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)