Remove readonly attributes in Selenium WebDriver
firefox, java, javascript, selenium, selenium-webdriver
Solution
I was not able to find the issue with your code. But in the meantime use the code given below.
List<WebElement> inputs = driver.findElements(By.tagName("input"));
for (WebElement input : inputs) {
((JavascriptExecutor) driver).executeScript(
"arguments[0].removeAttribute('readonly','readonly')",input);
}
Let me know if this helps you.
Problem
I need to edit some `readonly` fields with Selenium WebDriver in Java. As Selenium won't let me even find this fields I searched for solutions and found that the easiest might be to remove the `readonly` attribute using a JavaScript snippet with the JavaScript Executor. While this snippet works from the Firefox console, successfully removing the attribute from all inputs, it throws an exception in Selenium. JavaScript executor: ``` ((JavascriptExecutor) driver).executeScript( "var inputs = document.getElementsByTagName('input');"+ "for(var i = 0; i < inputs.length; i++)"+ "inputs[i].removeAttribute('readonly','readonly');" ); ``` And the error returned: Exception in thread "main" org.openqa.selenium.WebDriverException: illegal character Command duration or timeout: 51 milliseconds UPDATE: The same error appears if I leave only the first JS command: ``` ((JavascriptExecutor) driver).executeScript( "var inputs = document.getElementsByTagName('input');"); ``` The rest of the stack trace is not relevant for this. Anyone knows how to fix this, or another way to edit the `readonly` fields?