我正在IE11上执行selenium自动化。现在换一个元素,比如说ele; ele.sendKeys(characters)
无法直接使用。所以我试图通过JavaScript Executor更改<input>
标记的'value'属性。一旦我改变了,我就通过ele.getAttribute('value')
进行验证。但那次我得到的价值仍然像以前一样。我的测试也失败了。
HTML代码
<form id="upload" method="post" action="/upload" enctype="multipart/form-data" style="width: 90%">
<label for="uploadinputFile">
<br style="clear:all">
<input id="browse_file" class="bttn-primary" type="button" value="Browse">
<input id="file_input_browser" type="file" name="upload_File">
<div id="button">
<input id="submit" class="bttn-primary" type="submit" disabled="" value="Upload">
</div>
</form>
Selenium Code
WebElement brw=driver.findElement(By.id("file_input_browser"));
((JavascriptExecutor) driver).executeScript("document.getElementById('file_input_browser').setAttribute('value', 'new value for element')");
System.out.println("value:"+brw.getAttribute("value"));
我还使用了以下JavaScriptExecutor:
((JavascriptExecutor) driver).executeScript("arguments[0].setAttribute('value', '" +c+"')",brw);
// c是一个字符串
但每次我得到brw.getAttribute("value")
的输出为空/空
答案 0 :(得分:0)
您必须在操作DOM之后实例化WebElement
,而不是之前。否则,存储的WebElement
将不包含您要查找的信息,并将返回null
。
driver.executeScript("document.getElementById('ID').setAttribute('value','NEW_VALUE');");
System.out.print("value: "+driver.findElement(By.id("ID")).getAttribute("value"));