2016-05-24 5 views
1

Я использую драгоценный камень watir-webdriver и недавно остановился, пытаясь щелкнуть некоторые элементы в firefox.Попытка прокрутки элемента к центру окна просмотра

При попытке щелкнуть элемент, отсутствующий в окне просмотра, страница прокручивает и помещает элемент вверху страницы. Что по сути просто:

require 'watir-scroll' 
element = @browser.div({:id=>'potatoes'}) 
element.wait_until_present 
@browser.scroll.to(element) 
element.click 

ИЛИ

$("div[id='potatoes']").scrollIntoView(); 

Однако это вызывает у меня некоторые проблемы, поскольку у меня есть перекрывающий баннер работает в верхней части страницы, которая, в свою очередь, вызывает элемент, чтобы быть " за этим. Есть простой способ попытаться прокрутить элемент, но вместо того, чтобы поместить его в верхнюю часть окна просмотра, попробуйте центрировать его.

Кроме того, я использовал:

$("div[id='potatoes']").scrollIntoView(false); 

для прокрутки элемента и поместить его в нижней части страницы, однако, было бы неплохо, чтобы он по центру, в случае, если я хотел бы иметь баннеры в то внизу страницы.

С уважением

+1

см http://stackoverflow.com/questions/36706986/watir-webdriver-throws-not-clickable-error-even-when-element-is-visible-prese/36708613#36708613 – Carldmitch

ответ

0

IE & Firefox реализовать elementScrollBehavior. Он настроен для всех элементов для всего сеанса драйвера. Где 0 по умолчанию и помещает элемент в верхнюю часть порта представления, а 1 прокручивает элемент в нижней части порта представления.

caps = Selenium::WebDriver::Remote::Capabilities.firefox('elementScrollBehavior' => 1) 
Watir::Browser.new :firefox, desired_capabilities: caps 

Для большего контроля вам нужно будет использовать JavaScript (Watir, вероятно, следует изучить более прямую поддержку прокрутки смещения элемента).

browser.execute_script('javascript:window.scrollBy(250,350)') 
Смежные вопросы