如何使用Java在SeleniumWebDriver的隐藏字段中键入一些文本

如何使用Java在SeleniumWebDriver的隐藏字段中键入一些文本,java,javascript,textfield,selenium-webdriver,hidden-field,Java,Javascript,Textfield,Selenium Webdriver,Hidden Field,我将WebDriver与Java一起用于测试自动化。我有以下隐藏的输入字段HTML代码: <input type="hidden" value="" name="body" id=":6b"> 但显示了以下错误: org.openqa.selenium.ElementNotVisibleException:元素当前不可见,因此可能无法与之交互 命令持续时间或超时:30.04秒 有谁能帮我在隐藏字段中写入/键入一些文本吗?首先,您必须将type属性的值从hidden更改为text。以

我将WebDriver与Java一起用于测试自动化。我有以下隐藏的输入字段HTML代码:

<input type="hidden" value="" name="body" id=":6b">
但显示了以下错误: org.openqa.selenium.ElementNotVisibleException:元素当前不可见,因此可能无法与之交互 命令持续时间或超时:30.04秒


有谁能帮我在隐藏字段中写入/键入一些文本吗?

首先,您必须将type属性的值从hidden更改为text。以下使用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");

您需要初始化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');");

需要补充一点:id是动态的。这里id=“:6b”,有时我发现id=“:3y”我想用JS设置一个值应该如下:jse.executeScript(“document.getElementsByName('body')[0]。value='Ripon Al Wasim as body text';);当我使用你给出的代码时,我在jse.executeScript(“document.getElementsByName('body')[0].setAttribute('type','text');”)行上得到NullPointerException错误;实际上,我的字段是可见的,但我无法在该字段中输入数据。@Umamaheshwar Thota:您能提供该字段的HTML代码吗?我问过这个问题。
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');");