我正在使用WebDriver和Java进行测试自动化。我有以下隐藏的输入字段的HTML代码:
<input type="hidden" value="" name="body" id=":6b">
如何在Selenium2(WebDriver)的隐藏字段中输入内容?我编写了代码:
driver.findElement(By.name("body")).sendKeys("test body");
但是显示以下错误: org.openqa.selenium.ElementNotVisibleException:元素当前不可见,因此可能无法与之交互 命令持续时间或超时:30.04秒
有人可以帮我在隐藏字段中写/输入一些文字吗?
答案 0 :(得分:21)
首先,您必须将type属性的值更改为隐藏的文本。使用javascript的以下代码适用于此:
jse.executeScript("document.getElementsByName('body')[0].setAttribute('type', 'text');");
现在,您可以使用WebDriver键入该文本。因此,使用Java和Javascript键入WebDriver的整体代码如下:
WebDriver driver = new FirefoxDriver();
JavascriptExecutor jse = (JavascriptExecutor)driver;
jse.executeScript("document.getElementsByName('body')[0].setAttribute('type', 'text');");
driver.findElement(By.xpath("//input[@name='body']")).clear();
driver.findElement(By.xpath("//input[@name='body']")).sendKeys("Ripon: body text");
答案 1 :(得分:3)
WebDriver driver=new FirefoxDriver();
driver.get("http://localhost/login.do");
driver.manage().window().maximize();
RemoteWebDriver r=(RemoteWebDriver) driver;
String s1="document.getElementById('username').value='admin'";
r.executeScript(s1);
答案 2 :(得分:0)
您需要初始化一个 JavascriptExecutor,它将执行一个 javaScript 命令:
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("document.getElementById('ElementId').setAttribute('type','text');");
driver.findElement(By.id("ElementId")).click();
driver.findElement(By.id("ElementId")).clear();
driver.findElement(By.id("ElementId")).sendKeys("theTextYouWant");
如果你想隐藏它:
js.executeScript("document.getElementById('ElementId').setAttribute('type','hidden');");