Selenium Webdriver:元素当前不可见

时间:2013-12-05 02:48:52

标签: javascript jquery html selenium selenium-webdriver

我使用相同类型的代码来选择下拉代码正常工作但在这种情况下我试图点击按钮。我收到错误,因为元素当前不可见,因此可能无法与之交互 命令持续时间或超时:31毫秒

JavascriptExecutor executor3 = (JavascriptExecutor)driver;
executor3.executeScript("document.getElementById('iskpiFilterAction').style.display='block';");
driver.findElement(By.id("iskpiFilterAction")).click();
Thread.sleep(6000); 

问题是隐藏的类型和html标签如下:

<input id="iskpiFilterAction" type="hidden" value="1" name="isKpiFilterAction">

任何人都可以查看代码并给我解决方案或示例代码。

3 个答案:

答案 0 :(得分:2)

正如评论中提到的epascarello,#iskpiFilterAction 不是按钮,它是一个隐藏的<input>元素。因此,您不能在此click()

driver.findElement(By.id("iskpiFilterAction")).click(); // this won't work

答案 1 :(得分:0)

此外,人们通常使用这样的元素(可见或不可见)使用ExpectedCondition.visibilityOfElement(),如下所示:

WebElement foo2 = wait.until(ExpectedConditions
      .visibilityOfElementLocated(By.id("iskpiFilterAction")));

然而,获取元素的常规方法可能是:

WebElement foo2 = wait.until(ExpectedConditions
      .presenceOfElementLocated(By.id("iskpiFilterAction")));

答案 2 :(得分:0)

您可以尝试使用Selenuim Actions类来模拟用户交互,这将使按钮对用户可见 -

例如:

WebElement menu = driver.findElement(By.xpath(“));

    Actions build = new Actions(driver);
    build.moveToElement(menu).build().perform();//Hovers the mouse over the first element which will trigger the event
    WebElement m2m= driver.findElement(By.xpath(""));// finds the previouslly hidden element
    m2m.click();