一尘不染

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

selenium

可以说我的网页中包含以下代码段:

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


阅读 317

收藏
2020-06-26

共1个答案

一尘不染

我曾经使用Javascript为Firefox做过一次。基本上,我在Firefox中使用了range对象来选择文本。根据您要选择的内容更改开始和结束范围索引。这在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);
2020-06-26