尝试将元素滚动到视口的中心
Attempt to scroll an element to the centre of the viewport
我正在使用 watir-webdriver gem,最近在尝试单击 firefox 上的某些元素时遇到了问题。
尝试单击视口外的元素时,页面会滚动并将该元素放在页面顶部。这基本上只是:
require 'watir-scroll'
element = @browser.div({:id=>'potatoes'})
element.wait_until_present
@browser.scroll.to(element)
element.click
或
$("div[id='potatoes']").scrollIntoView();
然而,这给我带来了一些问题,因为我在页面顶部有一个覆盖横幅 运行,这反过来又导致元素成为 "behind"。有没有一种简单的方法可以尝试滚动到某个元素,而不是将其放在视口顶部,而是尝试将其居中。
另外我用过:
$("div[id='potatoes']").scrollIntoView(false);
滚动到该元素并将其放置在页面底部,但最好将其居中,以防我想在页面底部放置横幅。
此致
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)')
我正在使用 watir-webdriver gem,最近在尝试单击 firefox 上的某些元素时遇到了问题。
尝试单击视口外的元素时,页面会滚动并将该元素放在页面顶部。这基本上只是:
require 'watir-scroll'
element = @browser.div({:id=>'potatoes'})
element.wait_until_present
@browser.scroll.to(element)
element.click
或
$("div[id='potatoes']").scrollIntoView();
然而,这给我带来了一些问题,因为我在页面顶部有一个覆盖横幅 运行,这反过来又导致元素成为 "behind"。有没有一种简单的方法可以尝试滚动到某个元素,而不是将其放在视口顶部,而是尝试将其居中。
另外我用过:
$("div[id='potatoes']").scrollIntoView(false);
滚动到该元素并将其放置在页面底部,但最好将其居中,以防我想在页面底部放置横幅。
此致
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)')