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

2024-02-28

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


使元素可滚动通常是通过设置overflow风格。它很可能在一个div其中包含table。例如:

<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 开始)没有用于滚动元素的内置方法。然而,仍然有一些解决方法。

设置滚动顶部

您可以通过设置元素的滚动位置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 or :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  
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 watir-scroll 在表格内滚动 的相关文章

  • 如何在 Ruby 中使用循环输出所有可能的组合?

    我刚刚开始学习编程 并试图编写一个输出所有可能组合的函数 到目前为止 我已经能够找到尺寸 2 的所有可能组合 但我不确定如何使代码保持开放式以处理更大尺寸的组合 某种递归会有用吗 我知道我可以使用内置的组合方法 但我只是想弄清楚如何从头开始
  • 新手:我的例子中的文本替换

    In my 红宝石 on Rails应用程序中 我的助手中有一个方法 它通过以下方式打开文件 content File open myfile txt The 文件内容就好像 my car my seat my age my son my
  • Ruby 守护进程,用于使临时 Ruby 实例的对象保持活动状态

    Ruby 是否提供了一种在不同运行的 Ruby 进程之间共享变量 更重要的是 类对象和我认为对此有用的任何其他数据抽象 的机制 例如 如果我有一个类被实例化 初始化并仔细调整到某种状态 我希望该状态对我全天所有其他独立的 Ruby 和 Ir
  • 如何检查当前日期并移至下一个日期

    我遇到了一个我似乎无法理解的 python 问题 不确定是否需要使用 if 语句 但因为我是 python 新手 所以我实际上不确定如何编写这个小问题 事实上 这就是我遇到的问题 对于出发日历 我希望 python 能够执行以下操作 查看
  • Selenium 上的切换窗口

    我在 Python 中使用 Selenium 和 PhantomJS 我需要打开一个新窗口并控制它 出于测试目的 我这样做 from selenium import webdriver driver webdriver PhantomJS
  • 如何在 Angular2 中实现间隔/轮询以与量角器一起使用?

    我有一个 angular2 应用程序 我想用量角器进行测试 在此应用程序中 我有一个带有图表的页面 该页面正在使用自动生成的数据定期更新 显然 Protractor 的一项功能是在执行测试代码之前等待脚本和 http 调用完成 但是 如果有
  • 使用mongoid动态创建索引

    我有一项为我的文档创建新字段的工作 我想在这项工作结束时创建该字段的索引 我试过 Model index field gt 1 and also Mongoid Sessions default rating prediction ensu
  • Chrome 浏览器无法在 selenium webdriver 中打开

    我的代码没有启动浏览器 项目显示运行了很长时间 但没有任何反应 我按下打印并观察到WebDriver driver new ChromeDriver 没有被处决 package seleniumautomation import org o
  • ActiveSupport::TimeWithZone#to_date 返回错误日期

    我想要以下实例的日期部分ActiveSupport TimeWithZone 我用了to date函数 但它返回前一天的日期 例如 如果日期时间是2012 04 11 09 05 00 UTC 如果我打电话to date然后它返回2012
  • Guard 不会加载 WDM

    我正在学习 Michael Hartl 的 Rails 教程 到目前为止该教程非常出色 我在高级设置一章中 他以有利于 TDD 的方式配置 Rails 环境 我安装了 Guard 并且通过运行我在 spec 文件夹中的测试 它一直正常运行
  • 被一个简单的正则表达式难住了

    我想看看字符串是否s包含正则表达式中的任何符号 下面的正则表达式可以正常工作rubular http rubular com s asd d s 但在 Ruby 1 9 2 中 它给出了以下错误消息 syntax error unexpec
  • File.delete 上的 Ruby (Errno::EACCES)

    我试图在使用完一些 XML 文件后删除它们 其中一个文件给了我这个错误 delete Permission denied monthly builds xml Errno EACCES Ruby 声称该文件受到写保护 但我在尝试删除它之前设
  • java.net.SocketException:Selenium driver.close() 或 driver.quit() 语句上的连接重置

    我看到一个java net SocketException 连接重置几乎每次我使用 driver close 或 driver quit 语句时 浏览器确实关闭了 并且到目前为止 该异常并未影响我的任何测试 但我仍然想了解为什么会发生这种情
  • 在 Rails 3.2 + SimpleForm 中显示嵌套表单有错误的字段

    我有一个Flight模型嵌套在一个FlightLog模型 AFlightLog可能包含许多航班 我使用 SimpleForm 进行引导安装 这样当验证失败时 可以用错误类包围带有错误的表单元素 问题是 即使触发了嵌套模型的验证 simple
  • 使用 Ruby on Rails 进行设计 - 强制用户在首次登录时更改密码

    我有一个运行 Devise 的 RoR 应用程序 Rails 4 2 Ruby 2 2 0 我已经进行了设置 以便管理员用户 标识了我添加到用户模型中的 is admin 布尔值 能够创建新的用户帐户 为他们提供生成的密码和确认电子邮件 这
  • Java selenium - 如何在 TimeoutException 之后正确刷新网页?

    ChromeOptions options new ChromeOptions options addExtensions new File extension 6 2 5 0 crx ZenMate options addExtensio
  • 如何用水豚填充日期时间本地字段?

    我正在使用 Cocoon 添加记录 ID 看起来像workshop instance sessions attributes 1477654140 start time 目前 我正在遍历 DOM 并获取动态生成的 ID 这很好用 这样我就可
  • selenium 2.0 中的 isElementPresent

    大家好 我正在使用 webdriver 所以如果我想使用 selenium s rc 函数 isElementPresent 我必须模拟 selenium rc 所以我会执行以下操作 import org openqa selenium B
  • 如何在 Ruby on Rails 中不使用 eval 将字符串转换为哈希值? [复制]

    这个问题在这里已经有答案了 这里是string需要转换成hash status gt label gt Status collection gt return misc definitions project status 我们不能使用ev
  • 类、模块、它们的特征类和方法查找

    我们来开公开课吧Module并向其中添加一个方法 class Module def foo puts phew end end 我可以通过这样做来调用这个方法 Class foo 这是可以理解的 因为类Class is Class 其超类是

随机推荐

  • 性能测试 OpenLayers 与 Leaflet

    我想比较 OpenLayers 和 Leaflet 之间的性能 我想测试诸如渲染矢量文件 底图 显示大量标记等最快的东西 我可以自己设置这个例子 但我不知道如何实际测量它们之间的速度差异 在哪里可以看到执行将矢量数据加载到地图等任务实际需要
  • 单独项目中的 nHibernate 域模型和映射文件

    有没有办法将域对象和映射文件分离到两个单独的项目中 我想创建一个名为 MyCompany MyProduct Core 的项目 其中包含我的域模型 以及另一个名为 MyCompany MYProduct Data Oracle 的项目 其中
  • GKE 入口 https 重定向 - FrontendConfig 无法识别

    我有一个同时包含 Http 和 Https 的 GKE 入口 我想将流量从端口 80 重定向到端口 443 我找到了这个 https github com kubernetes ingress gce issues 1075 https g
  • 无法加载配置“airbnb”以扩展 - gitlab ci

    我尝试以各种方式进行和重做 Airbnb eslint 安装 但我总是在 GitLab ci 中遇到此构建错误 它适用于我当地的环境 我使用 create react app 创建了项目 单独安装了依赖项 以免覆盖 eslint 版本 但我
  • 如何将 stderr out 和 stdout out 重新定义为单独的日志?

    如何使用日志记录模块重新定义 stderr out 和 stdout out 以单独记录文件 例如 stderr log 和 stdout log 文件 您可以简单地替换sys stdout and sys stderr使用自定义的类似文件
  • Firestore 强制用户编写 id 等于其自己的 uid 的文档的规则

    我想保证用户只能添加与其 auth uid 具有相同 id 的文档 例如 ID 为 1X0T6xC6hhRN5H02zLCN6SQtwby2 的用户只能创建 更新文档 salesmen 1X0T6xC6hhRN5H02zLCN6SQtwby
  • 如何为 Kubernetes 集群确定合适的 pod CIDR 值?

    我正在启动一个 kubernetes 集群 kubeadm init pod network cidr 192 168 1 0 16 apiserver advertise address 192 168 0 33 我对网络概念或 CIDR
  • Nuget.exe 安装 — Microsoft.CSharp 已经具有 System.Dynamic.Runtime 的依赖项

    我们通过 CI 构建中的 PowerShell 预构建脚本安装一些包 最近 我们收到了部分成功的电子邮件通知 其中提供了以下信息 Microsoft CSharp 已经具有为 System Dynamic Runtime 定义的依赖项 以下
  • YAML Jackson - 数组的锚键

    我正在尝试将 YAML 文件解析为对象 尽管 Online YAML 解析器告诉我它可以按照我想要的方式进行解析 但 Jackson YAML 解析器拒绝给我我想要的东西 这是 YAML 文件 nom service1 etats e1s1
  • 为什么 MultiMap 中不保留插入顺序?

    public class MultiMap Test public static void main String args Multimap
  • Spring MVC 预填充复选框

    首先是一些背景信息 获得了相当标准的用户角色关系 其中用户可以拥有多个角色 我将角色定义为用户类中的一组 现在我知道 html 表单将所有值都作为字符串 并且尝试获取值 因为我的自定义 Role 对象不起作用 我实现了一个 initbind
  • C2440 static_cast 无法从基类转换为派生类

    我试图理解为什么使用指针从基类到派生类的转换编译得很好 但使用非指针对象进行转换会产生错误 C2440 下面我有一个基类ThreadedMessage这是由类继承的GPSMessage struct ThreadedMessage Thre
  • 如何阻止 [Required] 注释在被覆盖的字段上被继承?

    我有一个电话号码通知模型 用户通过与帐户关联的电话号码收到紧急情况通知 并且可以设置呼叫的顺序 大多数时候 模型的电话号码部分是必需的 但在创建新用户时有一种特殊情况 我们不想强制它 我创建了一个非常简单的子对象 UserCreationP
  • 使用 e.stopPropagation() 防止事件冒泡的优点和缺点

    很多人都解释过e stopPropagation 防止事件冒泡 然而 我很难找到why人们首先想要或想要阻止事件冒泡 在我的网站上 我有许多元素 其名称如下 document body on click clickable function
  • 在 pandas 中加载带有二进制数据的 CSV 文件

    我正在尝试解析 CSV 文件 来自外部数据源 其中其中一列使用不一致的字符编码 我不想尝试让数据提供者使用一致的编码 而是只想将该列读取为二进制数据 然而 pandas read csv似乎在解析之前将整个文件解码为字符串 所以这给了我错误
  • 正则表达式包含某些单词但排除另一个单词

    我正在尝试编写一个正则表达式 它将检查 URL 是否包含某些单词并排除另一个单词 原因是我正在尝试跟踪通过我的网站的流量 并且我不想计算点击 谢谢 页面的任何人 例如 http www mywebsite com register now
  • 将字符串编码为字符代码

    我想将电子邮件地址编码为其相应的字符代码 因此在打印时 浏览器会解释字符代码 但机器人会获取编码的字符串而不是解释的字符串 例如 1 email protected cdn cgi l email protection 应按 2 发送到浏览
  • 鼠标悬停在 safari、selenium web 驱动程序中不起作用

    我在 FF 和 chrome 中使用鼠标悬停操作 它工作正常 但同样的代码在 safari 中不起作用 我正在使用 mac OS 和 selenium webdriver 和 java 我尝试了下面的代码 new Actions drive
  • 我可以向通过 MQTT WebSocket 连接的一组 Azure IoT 中心设备发送消息吗?

    Goal 将消息发送到一组通过 MQTT WebSocket 连接的 Azure IoT 中心设备 初步想法 让一组 IoT 中心设备 组 X 订阅主题 X 的消息 Problem On the 使用 MQTT 协议与 IoT 中心通信 h
  • 如何使用 watir-scroll 在表格内滚动

    我有一个应用程序 其中有一个动态表 仅当您向上或向下滚动时才会加载行 Watir scroll 正在滚动整个页面 我可以在该表中执行滚动吗 使元素可滚动通常是通过设置overflow风格 它很可能在一个div其中包含table 例如 div