我需要使用 Java 中的 Selenium WebDriver 编辑一些 readonly
字段。由于 Selenium 甚至不允许我找到这个字段,我搜索了解决方案,发现最简单的方法可能是使用带有 JavaScript Executor 的 JavaScript 片段删除 readonly
属性。 .
虽然此代码段在 Firefox 控制台中运行,成功地从所有输入中删除了该属性,但它在 Selenium 中抛出了一个异常。
JavaScript 执行器:
((JavascriptExecutor) driver).executeScript(
"var inputs = document.getElementsByTagName('input');"+
"for(var i = 0; i < inputs.length; i++)"+
"inputs[i].removeAttribute('readonly','readonly');"
);
错误返回:
Exception in thread "main" org.openqa.selenium.WebDriverException: illegal character
Command duration or timeout: 51 milliseconds
更新:
如果我只留下第一个 JS 命令,也会出现同样的错误:
((JavascriptExecutor) driver).executeScript(
"var inputs = document.getElementsByTagName('input');");
堆栈跟踪的其余部分与此无关。任何人都知道如何解决这个问题,或者以其他方式编辑 readonly
字段?
最佳答案
我找不到您的代码的问题。但与此同时使用下面给出的代码。
List<WebElement> inputs = driver.findElements(By.tagName("input"));
for (WebElement input : inputs) {
((JavascriptExecutor) driver).executeScript(
"arguments[0].removeAttribute('readonly','readonly')",input);
}
如果这对您有帮助,请告诉我。
关于java - 删除 Selenium WebDriver 中的只读属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22711441/