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

时间:2011-09-22 14:24:03

标签: selenium webdriver

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

  

<p&GT;这是一些文字</p&gt;

我希望WebDriver在此文本中选择“some”,就像用户选择它一样。我该怎么办?我知道如何获取<p&gt; -element:

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。

3 个答案:

答案 0 :(得分:5)

我使用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);

答案 1 :(得分:1)

你试图通过拖动选择权来选择p标签的内容我不确定用户是否可以按照你的建议客观地做到这一点.Selenium现在试图嘲笑用户的确切行为可以在浏览器上执行。因此你不能发送一个移位并在p标签上留下选择键,并期望它选择与文本框不同的地方很可能但你可能不得不首先点击文本框以使其成为焦点。

以下是我建议实现此目的,不确定它是否有效。

a) send the left click on the p tag
b) hold the shift key
c) drag the mouse to the end of the p tag.

希望有所帮助。

答案 2 :(得分:0)

使用IWebElement的.Text属性

WebElement editable = getDriver().findElement(By.id("someId"));
editable = editable.findElement(By.tagName("p").Text).ToString();
editable.Replace("This is ", "").Replace(" text.");
System.out.println(p.getText());