【问题标题】:Unable to enter text in textfield in Selenium java无法在 Selenium java 的文本字段中输入文本
【发布时间】:2016-03-27 17:37:47
【问题描述】:

下面是HTML代码的相关sn-p:

         </td>                                   
         <td valign=top bgcolor="#dcdcdc" class="camp">
          <script>Oblog()</script>ID <br>


        <input type="text" name="idClnt" size="14" maxlength="11" value='' class="cat" onchange="Camp(this);resetPreScore();" onKeyPress="if (event.keyCode == 13){EnterData();}">

我使用下面这行代码输入数据

driver.findElement(By.name("idClnt")).sendKeys("10000057W");

我无法在文本字段中输入数据。它给出了以下错误:

“线程“主”org.openqa.selenium.ElementNotVisibleException 中的异常:未显示元素(警告:服务器未提供任何堆栈跟踪信息)“

但该元素似乎不是不可见的,我可以使用以下代码找到该元素:

      List<WebElement> ele = driver.findElements(By.name("idClnt"));

             System.out.println(ele);

它给出了输出:

 [[[InternetExplorerDriver: internet explorer on WINDOWS (f319ec27-9201-4536-80a1-fe89689ebe83)] -> name: idClnt], [[InternetExplorerDriver: internet explorer on WINDOWS (f319ec27-9201-4536-80a1-fe89689ebe83)] -> name: idClnt], [[InternetExplorerDriver: internet explorer on WINDOWS (f319ec27-9201-4536-80a1-fe89689ebe83)] -> name: idClnt]]

请建议我如何在文本字段中输入数据

【问题讨论】:

    标签: html selenium-webdriver hidden-field


    【解决方案1】:

    你为什么不使用类似的东西?

    driver.findElement(By.name("idClnt")).sendKeys("whatever you want to type");
    

    如果你只是想在输入框中输入数据,为什么在这里使用列表?

    【讨论】:

      【解决方案2】:

      1) 为了检查元素的可见性,您应该使用isDisplayed 方法:

      WebElement el = driver.findElement(By.cssSelector("input[class=cat]"));  
      System.out.println(el.isDisplayed());
      

      2) 输入文字:

      WebElement el = driver.findElement(By.cssSelector("input[class=cat]"));
      el.sendKeys("SO the best!");
      

      3) 如果您想将value 设置为隐藏input,请尝试以下操作(更详细的https://*.com/a/16327185/2517622):

      JavascriptExecutor js = (JavascriptExecutor) driver;
      WebElement el = driver.findElement(By.cssSelector("input[class=cat]"));
      js.executeScript("arguments[0].value = arguments[1];", el, "SO the best!");
      

      【讨论】:

      • 感谢您的回复!!我使用了 isDisplayed 方法,它把结果抛出为 false ,暗示该元素是不可见的。所以我需要一种在隐藏字段中输入数据的方法?
      • 感谢您的回复!但它似乎也不起作用,程序只是终止而没有任何错误。我尝试了 (*.com/questions/11858366/…) 中给出的一种方法。使用该方法会给我一个错误“不得隐藏、禁用或只读元素”。
      最近更新 更多