2013-01-18 40 views
2

我想設置一個文本輸入,然後單擊隱藏的鏈接(聽起來也許愚蠢,但這是另一個問題的解決方法)。所以我想是這樣無法設置文本隱藏的輸入

WebElement element = webDriver.findElement(By.cssSelector("input[id$='inputId']")); 
((JavascriptExecutor) webDriver).executeScript("arguments[0].style.visibility='visible';", element); 
element.sendKeys(text); 

我也試過

((JavascriptExecutor) webDriver).executeScript("arguments[0].setText(" + text + ")", element); 
or "arguments[0].text="someText" 

沒有這些工作,測試始終與

java.lang.IllegalArgumentException: Argument is of an illegal type: $Proxy30 

結束當我調試它,我可以看到該元素被正確找到,但在腳本執行過程中出現此異常。那麼我在這裏做錯了什麼?

P.S.如何點擊該鏈接,我是否也必須使用JS Executor?

回答

2

在半固體的瀏覽器,你甚至可以搜索通過JavaScript元素,只需要運行這個:

var elem = document.querySelector("input[id$='inputId']"); 
elem.value = "some text"; 

還要注意使用value。我從未見過元素上的setText()方法或text屬性,所以也許我錯了。但我確定輸入值由value屬性設置。

在的webdriver:

JavascriptExecutor js = (JavascriptExecutor)webDriver; 
js.executeScript(
    "document.querySelector(\"input[id$='inputId']\").value = '" + someText + "';"); 
+0

我在什麼地方見過,可能是一個愚蠢的想法去嘗試這個方法。無論如何,我如何使用你的代碼與WebDriver?我看到只是純粹的JavaScript –

+0

我想你知道如何執行任何JS ...編輯到答案,試試看。 –

+0

對不起,這是星期五,我有一個相當大的braindead :-)它的工作原理,非常感謝。 –