首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用Java在WebDriver中在隐藏文本框上键入文本

如何用Java在WebDriver中在隐藏文本框上键入文本
EN

Stack Overflow用户
提问于 2012-12-25 05:36:21
回答 3查看 11.1K关注 0票数 1

我试图发送输入键,但我不知道为什么它会这样警告我:

org.openqa.selenium.InvalidElementStateException:元素不能隐藏、禁用或只读(警告:服务器没有提供任何堆栈跟踪信息)。

HTML页面源:

代码语言:javascript
复制
<span id="mini-7" class="mini-textbox mini-textbox-empty" style="border-width: 0pt; width: 342px;">
<input class="mini-textbox-input" type="text" autocomplete="off" style="width: 338px;">
<input type="hidden">
</span>

我的代码:

代码语言:javascript
复制
driver.findElement(By.cssSelector("#mini-7 > input.mini-textbox-input")).clear();
driver.findElement(By.cssSelector("#mini-7 > input.mini-textbox-input")).sendKeys("yy");

然后我会像这样修改代码:

代码语言:javascript
复制
JavascriptExecutor jse = (JavascriptExecutor)driver;
((JavascriptExecutor) jse).executeScript("arguments[0].type ='text';",driver.findElement(By.xpath("//span[@id='mini-7']/input[2]")));   

但是这次它抛出了js错误。为什么?

我对第一个输入使用sendkey,此输入不隐藏。

EN

回答 3

Stack Overflow用户

发布于 2012-12-25 16:24:34

该输入仍然可以具有css属性visibility: hiddendisplay: none。这就是特例告诉你的。使用浏览器的开发工具检查所有属性。

票数 1
EN

Stack Overflow用户

发布于 2013-01-22 11:21:56

首先,它需要将类型属性值从隐藏中更改为文本。现在,您可以使用WebDriver输入该文本。因此,使用Java和Javascript输入WebDriver的总体代码如下:

代码语言:javascript
复制
WebDriver driver = new FirefoxDriver();
JavascriptExecutor jse = (JavascriptExecutor)driver;
jse.executeScript("document.getElementById('mini-7').setAttribute('type', 'text');");
driver.findElement(By.cssSelector("#mini-7 > input.mini-textbox-input")).clear();
driver.findElement(By.cssSelector("#mini-7 > input.mini-textbox-input")).sendKeys("yy");

对于第一个未隐藏的输入字段,对cssSelector使用绝对路径。

票数 1
EN

Stack Overflow用户

发布于 2013-01-07 11:21:26

在这种情况下,您可以通过修改css标记来使元素可见。

代码语言:javascript
复制
visibility: hidden 

代码语言:javascript
复制
display: none

在发送密钥之前使用javascript。

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

https://stackoverflow.com/questions/14027998

复制
相关文章

相似问题

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