javascript如何使用Java在WebDriver中的隐藏文本框中键入文本
我正在尝试向输入发送密钥,但我不知道为什么它会这样警告我:
org.openqa.selenium.InvalidElementStateException: Element must not be hidden, disabled or read-only (WARNING: The server did not provide any stacktrace information)
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错误。为什么
我使用sendkeys进行第一次输入,这个输入没有被隐藏
# 1 楼答案
在这种情况下,您可以通过修改
或者
在发送密钥之前使用javascript
# 2 楼答案
首先,它需要将type属性的值从hidden改为text。现在,您可以使用WebDriver键入该文本。因此,使用Java和Javascript使用WebDriver键入的总体代码如下:
对于第一个未隐藏的输入字段,请使用cssSelector的绝对路径
# 3 楼答案
该输入仍然可以具有css属性
visibility: hidden
或display: none
。这就是特例告诉你的。使用浏览器的开发工具检查所有属性