【问题标题】:How to type text on hidden text box in WebDriver with Java如何使用 Java 在 WebDriver 中的隐藏文本框中键入文本
【发布时间】:2012-12-25 05:36:21
【问题描述】:

我正在尝试向输入发送密钥,但我不知道为什么它会这样警告我:

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错误。为什么?

我对第一个输入使用sendkeys,这个输入没有隐藏

【问题讨论】:

  • 您是否尝试过使用大写的“HIDDEN”? IE 有一些问题
  • 我修好了,就像这样:JavascriptExecutor jse = (JavascriptExecutor)driver; ((JavascriptExecutor) jse).executeScript("arguments[0].style.visibility = 'visible';",driver.findElement(By.xpath("//span[@id='mini-7']/input" )));但我还是不知道为什么
  • 您使用的是什么语言?爪哇? C#?还是什么?

标签: java javascript input selenium-webdriver hidden-field


【解决方案1】:

该输入仍可能具有 css 属性 visibility: hiddendisplay: none。这就是异常告诉你的。使用浏览器的开发工具检查所有属性。

【讨论】:

    【解决方案2】:

    首先它需要将 type 属性的值更改为隐藏的文本。现在,您可以使用 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 的绝对路径。

    【讨论】:

    • 是的,这对我很有帮助
    • 推荐使用 xpath 的相对路径而不是绝对路径。但不幸的是,有时相对路径不起作用,在这种情况下,方法是使用绝对路径
    【解决方案3】:

    在这种情况下,您可以做的是通过修改

    的 css 标签使元素可见
    visibility: hidden 
    

    display: none
    

    在向其发送密钥之前使用 javascript。

    【讨论】:

      猜你喜欢
      • 2012-08-05
      • 2021-12-12
      • 2014-10-29
      • 1970-01-01
      • 2013-05-05
      • 2018-08-18
      • 2016-02-03
      • 1970-01-01
      • 2023-03-11
      相关资源
      最近更新 更多