2011-09-22 20 views
4

可以說我有下面的代碼片段在我的網頁:如何使用webdriver操作用戶選擇的文本?

<p>這是一些文本</p>

我想webdriver的選擇「一些」,在本文中,就好像用戶選中它。我應該怎麼做?我知道如何讓<p> - 元素:

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

println的版畫「這是一些文本」。

我試圖發送鍵的元素,和曾經工作(硒2.0B),但我使用硒2.6.0現在,它停止工作:

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

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

回答

5

的我這樣做一次,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); 
+0

嗨@nilesh。你還可以提供一些關於如何在IE瀏覽器(尤其是IE 11)上執行此操作的提示? – shruthi

1

您正試圖通過拖拽選擇右鍵來選擇p標籤的內容我不確定這是否客觀上可以由用戶完成,因爲您正在建議..硒現在試圖嘲笑確切的動作,用戶可以在瀏覽器上執行操作。因此你不能在p標籤上發送一個shift和左選擇鍵,並期望它不像文本框那樣選擇,這很有可能,但你可能需要首先點擊文本框才能將其置於焦點。

這是我建議實現這一點,不知道它是否會工作。

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. 

希望有所幫助。

0

使用Javascript使用。文本屬性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()); 
相關問題