2015-03-07 3 views
1

Я пытаюсь заполнить поле имени пользователя и пароля на этом сайте: http://www.youwager.eu/welcome/Доступ к форме с Splinter + PhantomJS (Python)

Вот Релевент HTML:

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

Простой браузер. 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, 2.43.0, селеном PhantomJS 1.9.7.0

ответ

2

Проблема заключается в том, что PhantomJS имеет размер видового экрана 400x300 по умолчанию, и страница меняет свой макет для меньшей ширины, в котором это поле не видно и из-за этого не взаимодействует через API WebDriver.

У вас есть два варианта. Либо вы меняете свой сценарий, чтобы принимать разные макеты страницы из-за медиа-запросов, либо изменяете размер окна браузера с помощью кода.

С Селен это сделано, как это (от here):

driver.set_window_size(1234, 987) 

Согласно кодексу (1, 2) кажется, что вы можете сделать это так:

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) 
Смежные вопросы