如何使用 watir-scroll 在 table 内滚动
How to scroll within a table using watir-scroll
我有一个应用程序,其中有一个动态 table,仅当您向上或向下滚动时才加载行。 Watir-scroll 滚动整个页面。无论如何,我可以在 table 中执行滚动吗?
使元素可滚动通常通过设置 overflow
样式来完成。它很可能在包含 table
的 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>
Watir(至少从 v6.17.0 开始)没有 built-in 方法来滚动元素。但是,仍然有一些解决方法。
设置scrollTop
可以通过设置元素的scrollTop
来设置元素的滚动位置属性:
# 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)
发送密钥
根据您的应用程序侦听滚动事件的方式,设置 scrollTop
可能不会触发行的加载。一种更有可能被检测到的方法是发送 :down
或 :page_down
键盘键 - 即更像真实用户。
看起来 Watir 和 Selenium-WebDriver 都阻止为此使用 #send_keys
(抛出不可交互的错误),因此您需要使用操作生成器:
# 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
我有一个应用程序,其中有一个动态 table,仅当您向上或向下滚动时才加载行。 Watir-scroll 滚动整个页面。无论如何,我可以在 table 中执行滚动吗?
使元素可滚动通常通过设置 overflow
样式来完成。它很可能在包含 table
的 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>
Watir(至少从 v6.17.0 开始)没有 built-in 方法来滚动元素。但是,仍然有一些解决方法。
设置scrollTop
可以通过设置元素的scrollTop
来设置元素的滚动位置属性:
# 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)
发送密钥
根据您的应用程序侦听滚动事件的方式,设置 scrollTop
可能不会触发行的加载。一种更有可能被检测到的方法是发送 :down
或 :page_down
键盘键 - 即更像真实用户。
看起来 Watir 和 Selenium-WebDriver 都阻止为此使用 #send_keys
(抛出不可交互的错误),因此您需要使用操作生成器:
# 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