首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >删除Selenium WebDriver中的只读属性

删除Selenium WebDriver中的只读属性
EN

Stack Overflow用户
提问于 2014-03-28 11:20:44
回答 2查看 17.8K关注 0票数 5

我需要在Java中使用Selenium readonly编辑一些WebDriver字段。由于Selenium甚至不允许我找到这个字段,所以我搜索了解决方案,发现最简单的方法可能是使用带有readonly的JavaScript片段删除JavaScript执行器属性。

虽然这个代码片段可以从Firefox控制台成功地从所有输入中删除该属性,但它在Selenium中抛出了一个异常。

JavaScript执行者:

代码语言:javascript
代码运行次数:0
运行
复制
((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命令,也会出现相同的错误:

代码语言:javascript
代码运行次数:0
运行
复制
((JavascriptExecutor) driver).executeScript(
    "var inputs = document.getElementsByTagName('input');​​​​");

堆栈跟踪的其余部分与此无关。有人知道如何修复这个问题,或者用另一种方式编辑readonly字段吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-28 11:58:07

我找不到你的代码的问题。但同时使用下面给出的代码。

代码语言:javascript
代码运行次数:0
运行
复制
List<WebElement> inputs = driver.findElements(By.tagName("input"));

for (WebElement input : inputs) {
    ((JavascriptExecutor) driver).executeScript(
                "arguments[0].removeAttribute('readonly','readonly')",input);
}

如果这对你有帮助,请告诉我。

票数 14
EN

Stack Overflow用户

发布于 2018-01-08 14:02:31

代码语言:javascript
代码运行次数:0
运行
复制
WebElement elementName = driver.findElement(By.xpath("//div[@arid='7']//input[@id='arid7']"));
((JavascriptExecutor) driver).executeScript("arguments[0].removeAttribute('readonly','readonly')", elementName);

这对我来说很管用

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22711441

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档