我需要在Java中使用Selenium readonly
编辑一些WebDriver字段。由于Selenium甚至不允许我找到这个字段,所以我搜索了解决方案,发现最简单的方法可能是使用带有readonly
的JavaScript片段删除JavaScript执行器属性。
虽然这个代码片段可以从Firefox控制台成功地从所有输入中删除该属性,但它在Selenium中抛出了一个异常。
JavaScript执行者:
((JavascriptExecutor) driver).executeScript(
"var inputs = document.getElementsByTagName('input');"+
"for(var i = 0; i < inputs.length; i++)"+
"inputs[i].removeAttribute('readonly','readonly');"
);
然后返回错误:
线程"main“org.openqa.selenium.WebDriverException中的异常:非法字符 命令持续时间或超时: 51毫秒
更新:
如果只留下第一个JS命令,也会出现相同的错误:
((JavascriptExecutor) driver).executeScript(
"var inputs = document.getElementsByTagName('input');");
堆栈跟踪的其余部分与此无关。有人知道如何修复这个问题,或者用另一种方式编辑readonly
字段吗?
发布于 2014-03-28 03:58:07
我找不到你的代码的问题。但同时使用下面给出的代码。
List<WebElement> inputs = driver.findElements(By.tagName("input"));
for (WebElement input : inputs) {
((JavascriptExecutor) driver).executeScript(
"arguments[0].removeAttribute('readonly','readonly')",input);
}
如果这对你有帮助,请告诉我。
发布于 2018-01-08 06:02:31
WebElement elementName = driver.findElement(By.xpath("//div[@arid='7']//input[@id='arid7']"));
((JavascriptExecutor) driver).executeScript("arguments[0].removeAttribute('readonly','readonly')", elementName);
这对我来说很管用
https://stackoverflow.com/questions/22711441
复制