Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 尝试将元素滚动到视口的中心_Ruby_Scroll_Viewport_Watir Webdriver - Fatal编程技术网

Ruby 尝试将元素滚动到视口的中心

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 或 然而,这给我带来了一些问题,因为我在页面

我正在使用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(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)')