Ruby 尝试将元素滚动到视口的中心
我正在使用watir webdriver gem,最近在尝试单击firefox上的某些元素时遇到了停顿 尝试单击视口外的元素时,页面会滚动并将该元素放置在页面顶部。这基本上就是:Ruby 尝试将元素滚动到视口的中心,ruby,scroll,viewport,watir-webdriver,Ruby,Scroll,Viewport,Watir Webdriver,我正在使用watir webdriver gem,最近在尝试单击firefox上的某些元素时遇到了停顿 尝试单击视口外的元素时,页面会滚动并将该元素放置在页面顶部。这基本上就是: require 'watir-scroll' element = @browser.div({:id=>'potatoes'}) element.wait_until_present @browser.scroll.to(element) element.click 或 然而,这给我带来了一些问题,因为我在页面
require 'watir-scroll'
element = @browser.div({:id=>'potatoes'})
element.wait_until_present
@browser.scroll.to(element)
element.click
或
然而,这给我带来了一些问题,因为我在页面顶部有一个覆盖横幅,这反过来会导致元素“在”它后面。有没有一种简单的方法可以尝试滚动到某个元素,但不要将其放置在视口顶部,而是尝试将其居中
此外,我还使用了:
$("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可能应该研究更直接的滚动到元素偏移量的支持)
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)')