How to scroll within a table using watir-scroll

牧云@^-^@ 提交于 2021-02-10 06:41:08

问题


I have an application in which there is a dynamic table, rows are loaded only when you scroll up or down. Watir-scroll is scrolling the entire page. Is there anyway I can perform the scrolling within that table?


回答1:


Making an element scrollable is often done by setting the overflow style. It is likely on a div that contains the table. For example:

<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>

There are no built-in methods in Watir (at least as of v6.17.0) for scrolling an element. However, there are still some workarounds.

Set scrollTop

You can set the scroll position of the element by setting its scrollTop property:

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

# Scroll to a specific point
div.execute_script('arguments[0].scrollTop = 100;', div) 

# Scroll down a certain amount
div.execute_script('arguments[0].scrollTop += 50;', div) 

Send Keys

Depending how your application is listening for the scrolled event, setting the scrollTop might not trigger the loading of rows. An approach that is more likely to be detected is by sending the :down or :page_down keyboard keys - ie more like a real user.

It looks like both Watir and Selenium-WebDriver prevent using #send_keys for this (throws not interactable errors), so you'll need to use the 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  


来源:https://stackoverflow.com/questions/63714913/how-to-scroll-within-a-table-using-watir-scroll

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!