滚动到视图与移动到元素

2023-11-29

在 Selenium WebDriver 中,有两种主要方法将一个元素放入可见区域:

  1. 滚动到视图中:

    ((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", element);
    
  2. Using moveToElement浏览器操作:

    Actions actions = new Actions(driver);
    actions.moveToElement(element);
    actions.perform();
    

这些方法是否等效?应该首选哪一种?


scrollIntoView

DOM 方法scrollIntoView只将元素滚动到视图中。如果scrollIntoView无法将元素滚动到视图中,它只会默默地失败。我在开头添加了一个不可见的元素body并打电话给scrollIntoView在上面。没有任何滚动,但没有错误。请注意,您可以更好地控制how元素滚动scrollIntoView比与moveToElement。 Selenium 只对将元素置于视图中以便鼠标可以放置在其上感兴趣。它没有让你对如何做有任何发言权。scrollIntoView但是,例如,您可以指定是否希望元素的顶部或底部与其可滚动祖先对齐。 (看here了解详情。)

moveToElement

硒法moveToElement做了两件事:它将元素滚动到视图中并将鼠标移动到元素顶部。我还使用无法滚动或移动到的元素对其进行了测试,因为它们在屏幕上没有坐标,并且这里也没有错误。

选择一个

我默认使用moveToElement,但以下情况除外:

  • 如果你根本不想影响 Selenium 放置鼠标的位置,但你想将某些内容滚动到视图中(有点奇怪......但可能),那么你应该使用scrollIntoView.

  • 如果您需要使用那种控件来滚动元素scrollIntoView给你(就像我上面提到的对齐选项),那么你必须使用它而不是moveToElement.

  • 在某些情况下,尝试通过 Selenium 命令模拟用户行为是不可能的,或者通过发送一系列 Selenium 命令来模拟用户行为的成本非常高。 (每个命令都是到网络的往返。当测试服务器位于互联网上的某个地方时,它就会累加起来。)在这种情况下,我使用 Selenium 的executeScript。在这种情况下,使用scrollIntoView在正在执行的脚本中,而不是结束脚本,创建一个Action执行滚动,并用另一个完成整个操作executeScript.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

滚动到视图与移动到元素 的相关文章

随机推荐

  • 如何在 SQL Server 中重命名 XML 节点名称

    我的数据库中有一个表 其中有一列存储 XML 数据 由于源代码的更改 我们想要重命名一个特定的 XML 节点名称和 XML 命名空间 假设我有以下 XML
  • 在 TCL 中比较两个列表的正确方法是什么?

    我是 TCL 的新手 我编写了以下代码 set list1 1 2 3 4 set list2 1 2 8 1 if lindex list1 0 lindex list2 0 puts They are equal 但是当我打印子列表元素
  • 无法从另一个类python访问变量

    这是我的代码 应该从 设置 类中打印 self cake 和 self age from startup import Settings class Profile Settings def init self super Profile
  • 警告:赋值使指针来自整数而不进行强制转换

    这是一个很常见的问题 但我还没有得到答案 所以再次询问 我将结构体定义为 struct f lock int x struct f lock next 然后说我有一个功能 struct f lock new node struct f lo
  • docker-compose 中“无法连接到本地 MySQL 服务器”

    我有带有 MySQL 的 Laravel 应用程序 我正在尝试使用 docker compose 在 Docker 中运行它 但是当应用程序尝试连接数据库时 它会抛出 Connector php 第 55 行中的 PDOException
  • 使用 mod_rewrite 重定向和重写

    问完这个问题后 用于搜索查询的干净 URL 我尝试使用 mod rewrite 进行一些操作 RewriteCond QUERY STRING s a z NC RewriteRule s 1 NC R 301 L RewriteRule
  • 使用滑块更新散景图

    我正在尝试使用滑块来更新我的散景图 我发现使用 pandas dataframe 很难实现它 到目前为止没有找到任何例子 另一种方法是使用 columndatasource 在论坛上找到了一些示例 但仍然无法实现该功能 所以我有两列 X 轴
  • 如何正确等待 execve 完成?

    C 源代码 在 Linux Centos 6 3 上编译并运行 包含以下行 execve cmd argv envp execve不返回 但我想修改代码以知道它何时完成 所以我这样做 if child fork waitpid child
  • 使用 pybind11 嵌入 python。虚拟环境不起作用

    我正在尝试制作一个简单的 C 应用程序 它使用以下命令翻译短语googletranspython 库 所以我选择了pybind11为此目的嵌入Python 我还使用 cmake 进行代码配置 当我使用全局 python 安装时 一切正常 但
  • 使用 eigen3/sparse 的稀疏特征值

    是否有一种独特且有效的方法来查找实数 对称 非常大 比如说 10000x10000 的稀疏矩阵的特征值和特征向量Eigen3 有一个用于稠密矩阵的特征值求解器 但它没有利用矩阵的属性 例如这是对称性 此外 我不想将矩阵存储为密集的 或者 替
  • 用 C++ 制作简单的跨平台 GUI 的最佳方法是什么? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我想制作一个带有非常简单的 GUI 背景图形 取消按钮和进度条 的桌面应用程序 我的主要目标是 Mac 和 Windows 使用 Visual C 2008 可以吗 任何人都可以
  • 使用 CasperJS 实现页面对象模式

    有没有人已经用 casperjs 实现了著名的 页面对象模式 从长远来看 它对于测试可维护性非常有用 当您必须将测试的机制和目的分开时 使用它非常非常酷 以这种方式编写测试会变得更加愉快 有一些 ruby 和 selenium 的例子 ht
  • 列表理解/生成器中的海象赋值表达式

    我试图传递每个元素foo list变成一个函数expensive call 并获取其输出为的所有项目的列表expensive call是诚实的 我正在尝试用列表理解来做到这一点 这可能吗 就像是 像这样的事情 result list y e
  • 无法在套接字上使用 BufferedReader/Writer 发送和接收数据

    我正在制作一个客户端 服务器应用程序 并使用以下代码在服务器和客户端之间交换数据 服务器的发送和接收代码 public void run try BufferedReader input new BufferedReader new Inp
  • 具有特定值的行名和列名

    我有这个矩阵 我想得到一个 2 列矩阵 其中一列有行名 另一列有值为 1 的单元格的列名 x X1 X2 X3 X1 1 0 1 X2 0 1 0 X3 0 1 1 X4 1 0 0 str x num 1 886 1 886 1 0 1
  • 从“package::function”形式的字符串中获取函数

    有过讨论关于如何从字符串中获取变量 的确 get例如 适用于data table功能 get data table 回报data table 然而 gt get data table data table Error in get data
  • 带有 mongodb 的 yii2 无法登录或注册

    我们按照此 youtube 链接创建 yii2 mongodb 连接 但不起作用 检查此链接 https www youtube com watch v 1msu95ZkRe8 给出一个错误对象配置必须是包含 class 元素的数组 在视频
  • 将 varchar() 中的重音字符转换为 XML 导致“非法 XML 字符”

    我有一个应用程序写入的表 该字段为 varchar max 数据看起来像 xml DECLARE poit VARCHAR 100 SET poit
  • 如何在 Gtk 2 窗口上创建 cairo_t

    我有一个旧的应用程序 现在在 Gtk 2 上编译 但我需要介绍一下 Cairo 的使用 我不知道如何从我的小部件创建必要的 cairo 上下文 cairo t 这是我到目前为止正在尝试学习的代码 是从 Gtk 3 教程中修改的 咳咳 抄袭
  • 滚动到视图与移动到元素

    在 Selenium WebDriver 中 有两种主要方法将一个元素放入可见区域 滚动到视图中 JavascriptExecutor driver executeScript arguments 0 scrollIntoView true