我试图发送输入键,但我不知道为什么它会这样警告我:
org.openqa.selenium.InvalidElementStateException:元素不能隐藏、禁用或只读(警告:服务器没有提供任何堆栈跟踪信息)。
HTML页面源:
<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>我的代码:
driver.findElement(By.cssSelector("#mini-7 > input.mini-textbox-input")).clear();
driver.findElement(By.cssSelector("#mini-7 > input.mini-textbox-input")).sendKeys("yy");然后我会像这样修改代码:
JavascriptExecutor jse = (JavascriptExecutor)driver;
((JavascriptExecutor) jse).executeScript("arguments[0].type ='text';",driver.findElement(By.xpath("//span[@id='mini-7']/input[2]"))); 但是这次它抛出了js错误。为什么?
我对第一个输入使用sendkey,此输入不隐藏。
发布于 2012-12-25 16:24:34
该输入仍然可以具有css属性visibility: hidden或display: none。这就是特例告诉你的。使用浏览器的开发工具检查所有属性。
发布于 2013-01-22 11:21:56
首先,它需要将类型属性值从隐藏中更改为文本。现在,您可以使用WebDriver输入该文本。因此,使用Java和Javascript输入WebDriver的总体代码如下:
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使用绝对路径。
发布于 2013-01-07 11:21:26
在这种情况下,您可以通过修改css标记来使元素可见。
visibility: hidden 或
display: none在发送密钥之前使用javascript。
https://stackoverflow.com/questions/14027998
复制相似问题