2014-02-11 63 views
3

如何使用java腳本執行程序設置Web元素的文本?或者還有其他方法可以做到這一點嗎?使用javascript設置Web元素的文本 - Selenium Web驅動程序

<a class="selectBox selectBox-dropdown selectBox-menuShowing selectBox-active" style="width: 52px; display: inline-block; -moz-user-select: none;" title="" tabindex="0"> 
<span class="selectBox-label" style="width: 13px;">10</span> 
<span class="selectBox-arrow"/> 
</a> 

標籤下有兩個span元素 - 這是一個下拉菜單。用戶點擊span [2]並顯示一個列表,其中包含數據如10,20,30,40等。用戶單擊數字(元素),並將其設置爲span [1]的文本(在此處情況下,選擇10)。我應該如何解決這個問題?

我試過Action builder,它不工作。任何其他建議?

+0

不明白你的問題。您想做什麼?你可以設置文本點擊第二跨度右?那麼爲什麼你不這樣做,我的意思是點擊數字元素? – Husam

+0

@Husam:用戶點擊span [2],這只是一個箭頭按鈕。點擊後顯示一個列表。用戶點擊列表中的其中一個元素。 clicked元素中的文本被設置爲span [1]的文本。我試着用動作製造者來做這件事 - 沒有運氣!任何其他建議。 – Mike

+0

提供列表的html。如果Actions類真的不起作用。您可以嘗試 - **使用java腳本點擊數字,java腳本不需要點擊顯示的元素。**。 – Husam

回答

5

如果你想改變跨度文[1]直接,你可以使用下面的代碼:

String jScript = "var myList = document.getElementsByClassName(\"selectBox-label\");" 
    +"myList[0].innerHTML=\"YourNumber\";"; 
JavascriptExecutor executor = (JavascriptExecutor)driver; 
executor.executeScript(jScript); 

不過,您也可以點擊使用它,你說會設置文本Java腳本數量的範圍[1]。示例如下:

WebElement element = driver.findElement(By.xpath("YourNumbersXpath")); 
JavascriptExecutor executor = (JavascriptExecutor)driver; 
executor.executeScript("arguments[0].click();", element); 
相關問題