org.openqa.selenium.ElementNotVisibleException

时间:2014-10-17 11:33:03

标签: java selenium selenium-webdriver

我正在尝试用我正在使用的硒进行黑盒测试:

  • Mac os。:版本:10.9.4
  • java.version:1.6.0_65
  • 浏览器:firefox版本32.0.3
  • selenium:版本2.43.0

页面包含一个表格,每一行都有一个唯一的ID,可以正确提取并存储在String itemId中 然后我创建相应的WebElement并尝试按如下方式单击它:

WebElement anchor = webDriver.findElement(By.id(itemId));
if (anchor != null) {           
    anchor.click();
    Sleeper.sleep(2);
}

我得到了这个例外:

WARNING: Error extracting item data
org.openqa.selenium.ElementNotVisibleException: Element is not currently visible and so may not be interacted with

我已经阅读了几个关于WebDriverWait的SO问题,并尝试了以下代码:

String itemId = item.getAttribute("id");
WebDriverWait wait = new WebDriverWait(webDriver, 10);           
WebElement anchor = wait.until(ExpectedConditions.elementToBeClickable(By.id(itemId)));
anchor.click();
Sleeper.sleep(2); // yes I know I waited 10 seconds already I have time :)

现在我得到以下异常:

WARNING: Error extracting item data
org.openqa.selenium.TimeoutException: Timed out after 10 seconds waiting for element to be clickable

我尝试使用ElementIsVisible代替elementToBeClickable,但它似乎已被删除

1 个答案:

答案 0 :(得分:1)

注意:此解决方案在发生类似错误的任何地方都无法应用,但根据我的经验,它是Web应用程序中的常见问题。

如果您正在处理不可见的克隆表,则可以使用直接xpath到可见表或使用findByELements并迭代列表。

List<WebElement> temp_list = driver.findElements(By.id(itemId));
temp_list[1].click(); //example number, you have to find index corresponding to your element

请注意,只有当您有多个具有相同定位器的元素时,它才会起作用。您可以查看列表的大小。

temp_list.size();