解决方案 1) 滚动到最后一个元素
我认为维奈的方法应该奏效。但是,在当前表单中,它假定该元素已经存在于页面上。我猜你想要的元素只有在你滚动得足够远时才可见。所以你可以做的是滚动到 div 中的最后一个元素。
Watir-Webdriver
在 Watir-Webdriver 中:
div_with_scroll = browser.div(:class => 'containerNode tabContentPane typeNavigationSingleChild')
div_with_scroll.elements.last.wd.location_once_scrolled_into_view
Watir-经典
在 Watir-Classic 中,它是不同的,因为它不使用 selenium-webdriver:
div_with_scroll = browser.div(:class => 'containerNode tabContentPane typeNavigationSingleChild')
div_with_scroll.elements.last.document.scrollIntoView
解决方案 2) 使用 ScrollTop 属性
作为替代方案,如果上述方法不起作用,您可以设置scrollTop
属性以移动 div 元素的滚动条。这适用于我正在处理的应用程序,该应用程序的内容只有在您滚动到底部时才会加载。
Watir-Webdriver
要将滚动条跳到底部,理论上应该触发以下内容的加载,请将scrollTop
属性设置为scrollHeight
:
div_with_scroll = browser.div(:class => 'containerNode tabContentPane typeNavigationSingleChild')
scroll_bottom_script = 'arguments[0].scrollTop = arguments[0].scrollHeight'
div_with_scroll.browser.execute_script(scroll_bottom_script, div_with_scroll)
要跳回顶部,请将 设置scrollTop
为零。
div_with_scroll = browser.div(:class => 'containerNode tabContentPane typeNavigationSingleChild')
scroll_top_script = 'arguments[0].scrollTop = 0'
div_with_scroll.browser.execute_script(scroll_top_script, div_with_scroll)
您还可以根据需要去的地方使用介于两者之间的任何值。
Watir-经典
在 Watir-Classic 中,您可以scrollHeight
更直接地设置:
div_with_scroll = browser.div(:class => 'containerNode tabContentPane typeNavigationSingleChild')
#Go to bottom
div_with_scroll.document.scrollTop = div_with_scroll.document.scrollHeight
#Go to top
div_with_scroll.document.scrollTop = 0