【问题标题】:Element not visible for check box though its available尽管可用,但复选框的元素不可见
【发布时间】:2019-04-27 06:31:14
【问题描述】:

我正在尝试使用 Selenium 勾选一个复选框。页面如下所示。

然后当我点击编辑时,它会变成下面显示的格式。

此时,我可以使用下面显示的 xpath 从 Chrome 开发工具中选中复选框。

//input[@name='value[326071]']

下面是 DOM 的外观。

在单击复选框之前,我已将线程等待。下面是我的代码。

Thread.sleep(5000);
WebElement assignWorkSpaceElement = chromeDriver.findElement(By.xpath("//input[@name='value[326071]']"));
assignWorkSpaceElement.click();

我也尝试过使用下面的 xpath。仍然没有运气。我正在通过 IntelliJ 调试代码,在浏览 web 元素行之前,我可以从 Chrome 开发工具中选择复选框。它显然在那里。

//*[contains(@class,'col-md-8')]//input[@name='value[326071]']

但是当我执行代码时,我得到了以下异常。

org.openqa.selenium.ElementNotVisibleException: element not visible
  (Session info: chrome=70.0.3538.110)
  (Driver info: chromedriver=2.40.565386 (45a059dc425e08165f9a10324bd1380cc13ca363),platform=Mac OS X 10.13.6 x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 0 milliseconds

我在这里做错了什么?任何帮助将不胜感激。

【问题讨论】:

    标签: java selenium selenium-webdriver checkbox webdriver


    【解决方案1】:

    我认为您需要更改 xpath,并且不要使用 thread.sleep 而不是使用 webdriver wait。

    WebDriverWait wait = new WebDriverWait(driver, 5);
      WebElement e4 = wait.until(ExpectedConditions.visibilityOf(By.xpath("//div[@class='col-md-8- form-control-static']//following::input[1]")));
    
    if(e4.isDisplayed())
    {
      e4.click();
    }
    

    【讨论】:

      【解决方案2】:

      据我在您的 HTML 中看到的,您正在定位的 XPath 看起来有多个元素...

      现在,如果您尝试遍历所有复选框并单击,可以这样做:

      WebElement assignWorkSpaceElement = chromeDriver.findElements(By.xpath("//input[@name='value[326071]']"));
      for (WebElement el : assignWorkSpaceElement ) {
           el.click();
      }
      

      但如果您只想要 value=326071 的一个元素,则必须添加一些更具体的 XPath,例如:

      WebElement assignWorkSpaceElement = chromeDriver.findElement(By.xpath("//input[@name='value[326071]' and @type='checkbox' ]"));
      assignWorkSpaceElement.click();
      

      或者:

      WebElement assignWorkSpaceElement = chromeDriver.findElement(By.xpath("//input[@name='value[326071]' and @value='1' ]"));
      assignWorkSpaceElement.click();
      

      希望这有帮助!

      【讨论】:

        猜你喜欢
        • 2019-11-02
        • 1970-01-01
        • 2019-07-09
        • 1970-01-01
        • 2011-07-02
        • 1970-01-01
        • 2018-11-30
        • 1970-01-01
        • 2017-12-25
        相关资源
        最近更新 更多