如何使用 Java 在 Selenium WebDriver 的隐藏字段中键入一些文本
Posted
技术标签:
【中文标题】如何使用 Java 在 Selenium WebDriver 的隐藏字段中键入一些文本【英文标题】:How to type some text in hidden field in Selenium WebDriver using Java 【发布时间】:2012-08-05 04:47:54 【问题描述】:我正在使用带有 Java 的 WebDriver 进行测试自动化。对于隐藏的输入字段,我有以下 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 秒
谁能帮我在隐藏字段中写/输入一些文本?
【问题讨论】:
补充一点:id 是动态的。这里 id=":6b" ,有时我发现 id=":3y" 【参考方案1】:首先,您必须将 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");
【讨论】:
我想用 JS 设置一个值应该如下工作: jse.executeScript("document.getElementsByName('body')[0].value='Ripon Al Wasim as body text';") ; 当我使用你给出的代码时,我在 jse.executeScript("document.getElementsByName('body')[0].setAttribute('type', '文本');"); 实际上我的字段是可见的,但我无法在该字段中输入数据。 @Umamaheshwar Thota:能否提供该字段的 HTML 代码? 我问过的那个问题。【参考方案2】: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);
【讨论】:
【参考方案3】:你需要初始化一个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');");
【讨论】:
以上是关于如何使用 Java 在 Selenium WebDriver 的隐藏字段中键入一些文本的主要内容,如果未能解决你的问题,请参考以下文章
已下载 Selenium Webdriver Java zip,但缺少 selenium JAR
零基础Selenium:Webdriver图文入门教程java篇(附相关包下载)
Selenium eclipse 配置与 Webdriver 2 和 Selenium Java 客户端驱动程序