2013-01-18 38 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 :-)它的工作原理,非常感谢。 –