Ruby 如何使用watir scroll在表格内滚动

Ruby 如何使用watir scroll在表格内滚动,ruby,selenium,watir,Ruby,Selenium,Watir,我有一个应用程序,其中有一个动态表,只有在向上或向下滚动时才会加载行。Watir scroll正在滚动整个页面。我是否可以在该表中执行滚动?使元素可滚动通常是通过设置溢出样式来完成的。它可能位于包含表的div上。例如: <html> <body> <div style="overflow:scroll; height:250px;"> <table> <tr height="

我有一个应用程序,其中有一个动态表,只有在向上或向下滚动时才会加载行。Watir scroll正在滚动整个页面。我是否可以在该表中执行滚动?

使元素可滚动通常是通过设置
溢出
样式来完成的。它可能位于包含
表的
div
上。例如:

<html>
  <body>
    <div style="overflow:scroll; height:250px;">
      <table>
        <tr height="200px"><td>Cell A</td></tr>
        <tr height="200px"><td>Cell B</td></tr>
        <tr height="200px"><td>Cell C</td></tr>
        <tr height="200px"><td>Cell D</td></tr>
     </table>
    </div>
  </body>
</html>
发送密钥

根据应用程序侦听滚动事件的方式,设置
scrollTop
可能不会触发行的加载。一种更容易被检测到的方法是发送
:down
:page\u down
键盘键,即更像真实用户

看起来Watir和Selenium WebDriver都禁止为此使用
#send_键
(抛出不可交互的错误),因此您需要使用action builder:

# Get the element that has the overflow property
div = browser.div

# Scroll down a bit
browser.wd.action.send_keys(div.wd, :down).perform  
browser.wd.action.send_keys(div.wd, :page_down).perform  

# Scroll to the bottom
browser.wd.action.send_keys(div.wd, :end).perform  

我相信你可能已经意识到了,但是。至少对我来说,除非你分享你的HTML/并尝试代码,否则很难想出解决方案。@rahulrai是的,我非常清楚这一点!但该网站是内部的,而且我也没有找到任何与我的情况完全相似的示例网站。但我希望你能猜出我在说什么。网页中有一个表格,要滚动该表格,我将移动鼠标并向下滚动,但不知道如何通过selenium来刺激相同的动作。因此,为了让我的理解更清楚,当您在页面上滚动时,您的表格不会进一步加载吗?你有一些单独的垂直滚动表内??或者是一旦你们点击表n里面的页面,然后滚动页面,表就会被加载??你们真是个天才!工作起来很有魅力!但是这个ActionBuilder代码解决了陈旧元素的问题。它抛出了陈旧的元素,这很奇怪。应用程序是否每次滚动时都会重新创建
div
?我不知道具体发生在哪里,但当我执行
browser.wd.action.send_键(div.wd,:down)时,它会抛出陈旧的元素错误。正如我在问题中所述,当我滚动时,这些行将出现(这意味着它以前不存在,或者你在滚动之前找不到这些元素)这些元素会消失。表中显示的内容只存在。这很奇怪。那么你使用scrollTop解决方案了吗?
# Get the element that has the overflow property
div = browser.div

# Scroll down a bit
browser.wd.action.send_keys(div.wd, :down).perform  
browser.wd.action.send_keys(div.wd, :page_down).perform  

# Scroll to the bottom
browser.wd.action.send_keys(div.wd, :end).perform