如何使用 webdriver 操作用户选择的文本?

2023-12-08

假设我的网页中有以下代码片段:

<p> 这是一些文字</p>

我希望 WebDriver 在该文本中选择“某些”,就像用户选择它一样。我应该怎么做?我知道如何获得<p>-元素:

WebElement editable = getDriver().findElement(By.id("someId"));
editable = editable.findElement(By.tagName("p"));
System.out.println(p.getText());

println 打印“这是一些文本”。

我尝试向元素发送密钥,这曾经可以工作(在 selenium 2.0b 中),但我现在使用 selenium 2.6.0,它停止工作:

editable.sendKeys(Keys.chord(Keys.SHIFT, Keys.LEFT));

有人有想法吗?我正在使用 FirefoxDriver。


我使用 Javascript 在 Firefox 上做过一次。基本上我使用 Firefox 中的范围对象来选择文本。根据您要选择的内容更改开始和结束范围索引。这在 IE 中不起作用,因为选择范围在 IE 中在概念上是不同的。我手头没有 IE 代码,但既然你担心 FF,你可以尝试一下。 如果您对 IE 文本范围感兴趣,请告诉我。

String script = "var range = document.createRange();" +
"var start = document.getElementById('idofthedivthatcontainstext');" +
"var textNode = start.getElementsByTagName('p')[0].firstChild;" +
"range.setStart(textNode, 8);" +
"range.setEnd(textNode, 13);" +
"window.getSelection().addRange(range);";
 ((JavascriptExecutor)driver).executeScript(script);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 webdriver 操作用户选择的文本? 的相关文章

随机推荐

  • MonadException 实例未推导

    也许我在这里做了一些愚蠢的事情 但我得到 No instance for MonadException Ti arising from a use of getInputLine 在代码示例中 module Foo where import
  • Tornado - 通过 websocket 同时监听多个客户端

    我想使用 Tornado 在 Python 中创建 websocket 服务器 这是 API http tornado readthedocs org en latest websocket html 在 API 中 我没有看到获取客户端句
  • Apache .htaccess // 设置为禁止子文件夹文件

    我对 Apache htaccess 感到抓狂 我试图使用相对地址将我的子文件夹设置为受保护 但这似乎不可能 Apache文件夹的路径结构如下 var www apachedir 现在我想保护 var www apachedir subfo
  • 属性 httpRequest' 不存在

    当我在 Visual Studio 外部运行构建时收到此错误 名称为 httpRequest 的属性不存在 如果我在 Visual Studio 中运行相同的代码 它就会起作用 有人知道我做错了什么吗 我的应用程序配置
  • 方法 vs 基本 JS?我应该使用 toString 吗?解析Int? jQuery?

    自从我发现 toString 函数以来 这是我一直想知道的一个问题 但从未费心去问 我应该使用基本的 JS 还是做同样事情的函数 现在 不要误会我的意思 我意识到 toString 有其可取之处 就像将函数转换为字符串一样 var mess
  • PHP:如何用逗号分解字符串,而不是逗号在引号内的位置?

    我需要将字符串输入分解为逗号处的数组 但是该字符串在引号内包含逗号 Input line TRUE 59 A large number is 10 000 linearray explode line linemysql implode l
  • Android 使用 RSA 公钥加密字符串

    我正在从事一个必须使用 RSA 公钥加密密码的项目 我尝试了很多来自SO的示例和解决方案 如下所示 来自公共字符串的 Android RSA 加密 使用 SpongyCastle 进行 RSA 但不幸的是 这些解决方案都不适用于我的情况 如
  • 在 JSON.parse() 之后保留属性属性(可写、可配置)

    假设我正在其他地方创建一个对象并以某种方式将其传递到我的模块 也许它是在服务器上创建的node js 也许它是在不同的模块中创建的 无论出于何种原因我JSON stringify 解析它并传递序列化版本 特别是如果它来自服务器 但我希望这个
  • 禁用 PictureBox 上的图像混合

    在我的 Windows 窗体程序中 我有一个PictureBox包含一个小图像 5 x 5 pixels 当这个位图被分配给PictureBox Image属性 它变得非常模糊 我试图找到诸如混合模式 模糊模式或抗锯齿模式之类的东西 但我没
  • 创建新用户集realmRoles时 - Keycloak Admin REST API

    我在创建用户时分配现有领域角色时遇到问题 创建新用户时遵循文档POST realm users 在主体参数中使用UserRepresentation 我们有一个名为realmRoles这是可选的 我已经尝试在以下模式中进行分配 id 123
  • pip install Upgrade 升级私有依赖失败

    背景 pip支持ssh链接后缀 分店名称 提交哈希值 标签名称 一个 git 参考 但是 pip 在升级某些依赖于这些 ssh 链接的软件包时存在问题 在版本 5 1 2 的名为 CurrentPackage 的包的 setup py 中
  • Meteor/Semantic-UI 中的错误?

    如果根元素是流星模板 则语义 UI 模态窗口的使用不起作用 包 semantic ui css 错误重现 你好 html
  • UITableView willDisplayCell 方法的错误行为

    有一个UITableView的帖子 看到的帖子 id 保存在 sqlite 中我想用橙色显示已看过的帖子 用黑色显示其他帖子 但是当我为看到的帖子设置橙色时willDisplayCell方法某些单元格被错误地着色为橙色 否则打印日志 为其着
  • com.mysql.jdbc.driver类未找到异常

    我得到了帮助this博客文章 但我得到 com mysql jdbc driver 类未找到异常 该博客文章的不同之处在于 在我的例子中 他们尝试连接到 mysql 而不是 MS SQL 到目前为止 这是我的代码 包com example
  • Arduino 安卓 USB 连接

    我正在使用 Arduino杜米拉诺夫 and Nexus 7 我已成功检测到 Arduino 板并显示供应商 ID 和产品 ID 我正在尝试将数据从平板电脑传输到 Arduino 板并尝试闪烁LED在黑板上 Android 的代码如下 主要
  • UIWebView 只有一个应该适合整个视图的图像

    所以我现在遇到的问题是 UIWebViews 显示单个图像 我想要的是 如果图像不适合该位置 则缩小图像 如果不适合 则保持其原始大小 所以这是我的做法 在 UIViewController 中 void viewDidLoad super
  • std::bind 是否丢弃 C++11 中参数的类型信息?

    问题发生的情况 请考虑以下 C 代码 include
  • 如何在 Fortran 中创建函数?

    我确信这个问题的解决方案是非常基本的 但我很难弄清楚如何在 Fortran 中使用函数 我有以下简单的程序 PROGRAM main IMPLICIT NONE INTEGER a b a 3 b 5 PRINT funct a b END
  • 关于java实习生

    我的问题是实习生是否正在使用字符串并且字符串具有 SPC 字符串池常量 实习生概念也适用于整数 那么是否有整数池常量 如果没有那么它是如何工作的 class InternExample public void print Integer i
  • 如何使用 webdriver 操作用户选择的文本?

    假设我的网页中有以下代码片段 p 这是一些文字 p 我希望 WebDriver 在该文本中选择 某些 就像用户选择它一样 我应该怎么做 我知道如何获得 p 元素 WebElement editable getDriver findEleme