How to manipulate user selected text using webdriver?

Suppose I have the following snippet on my web page:

<p> This is the text </p>

I want WebDriver to select "some" in this text, as if the user had selected it. How should I do it? I know how to get element <p>:

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

Printout println "This is some text."

I tried to send the keys to the element and this was used to work (in selenium 2.0b), but now I am using selenium 2.6.0 and it stops working:

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

Does anyone have any ideas? I am using FirefoxDriver.

+4
source share
3 answers

Firefox, Javascript. 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);
+5

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.

, .

+1

.Text IWebElement

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());
0

All Articles