org.openqa.selenium.ElementNotVisibleException:元素当前不可见,因此可能无法与命令持续时间或超时交互:
Posted
技术标签:
【中文标题】org.openqa.selenium.ElementNotVisibleException:元素当前不可见,因此可能无法与命令持续时间或超时交互:【英文标题】:org.openqa.selenium.ElementNotVisibleException: Element is not currently visible and so may not be interacted with Command duration or timeout: 【发布时间】:2015-01-06 13:47:24 【问题描述】:我的问题是硒给出了异常可见的元素。我不明白这一点,因为当我在我的机器上进行构建时! (测试建立在竹子上)。
这是一个例外:
org.openqa.selenium.ElementNotVisibleException: Element is not currently visible and so may not be interacted with Command duration or timeout: 30.06 seconds Build info: version: '2.44.0', revision: '76d78cf323ce037c5f92db6c1bba601c2ac43ad8', time: '2014-10-23 13:11:40' System info: host: 'N/A', ip: 'N/A', os.name: 'Linux', os.arch: 'amd64', os.version: '3.2.0-52-virtual', java.version: '1.7.0_72' Session ID: 1757208d-d49e-4792-b053-e55e7300c233 Driver info: org.openqa.selenium.firefox.FirefoxDriver Capabilities [platform=LINUX, acceptSslCerts=true, javascriptEnabled=true, cssSelectorsEnabled=true, databaseEnabled=true, browserName=firefox, handlesAlerts=true, nativeEvents=false, webStorageEnabled=true, rotatable=false, locationContextEnabled=true, applicationCacheEnabled=true, takesScreenshot=true, version=34.0]
org.openqa.selenium.ElementNotVisibleException: Element is not currently visible and so may not be interacted with
Command duration or timeout: 30.06 seconds
代码:
String name;
String key;
@Before
public void setUp() throws InterruptedException
driver.findElement(By.id("menu_topMenu.maintenance")).click();
Thread.sleep(1000);
driver.findElement(By.id("menu_topMenu.route")).click();
@Test
public void test() throws InterruptedException
AddRoute addRoute = new AddRoute(driver);
addRoute.add();
name = addRoute.getName();
key = addRoute.getKey();
Thread.sleep(3000);
driver.findElement(By.cssSelector
("#Route_btn_novo")).click();
driver.findElement(By.cssSelector
("#Route_key > input[type=\"text\"]")).sendKeys(key);
driver.findElement(By.cssSelector
("#Route_description > input[type=\"text\"]")).clear();
driver.findElement(By.cssSelector
("#Route_description > input[type=\"text\"]")).sendKeys(name);
driver.findElement(By.cssSelector
("#Route_organization > div.lookUpHitArea")).click();
driver.findElement(By.cssSelector
("#MonetUIFieldsLookupGridContainer_organization > div.slick-pane.slick-pane-top.slick-pane-left > div.slick-viewport.slick-viewport-top.slick-viewport-left > div > div:nth-child(2) > div.slick-cell.l0.r0.cell-row")).click();
driver.findElement(By.cssSelector
("#Route_plannedCost > input")).sendKeys("10000");
driver.findElement(By.cssSelector
("#Route_origin > div.lookUpHitArea")).click();
driver.findElement(By.cssSelector
("#MonetUIFieldsLookupGridContainer_location > div.slick-pane.slick-pane-top.slick-pane-left > div.slick-viewport.slick-viewport-top.slick-viewport-left > div > div:nth-child(1) > div.slick-cell.l1.r1.cell-row.selected")).click();
driver.findElement(By.cssSelector
("#Route_lastStopIsDestination > input")).click();
Thread.sleep(1000);
driver.findElement(By.cssSelector
("#Route_btn_save_and_close")).click();
Thread.sleep(3000);
assertTrue("Rota existente nao validada corretamente",
isDisplayedByCssSelector(driver, "#form_and_grid > div > div.monetInlineAlerContainer > div"));
我不知道该怎么办了!
【问题讨论】:
我想知道你是如何执行测试的? 这个异常发生在我在竹子上执行时 @Saifur 你能帮帮我吗? 【参考方案1】:我不确定您的整个设置如何。但是,一种常见的做法是在这种情况下使用Selenium Grid。这个想法是拥有一个 selenium 集线器和多个从属设备(根据您的需要,可能是虚拟机),并让 CI 服务器控制从属设备来执行测试。您遇到的问题是因为 CI 服务器的行为不像您的本地机器那样。该元素不可见意味着 selenium 无法与浏览器进行交互,它不应该在 CI 上进行交互。请参阅this 以了解有关网格的更多信息。 This 应该可以帮助您入门。
注意:这是从 CI 执行 selenium 测试的众多方法之一
【讨论】:
以上是关于org.openqa.selenium.ElementNotVisibleException:元素当前不可见,因此可能无法与命令持续时间或超时交互:的主要内容,如果未能解决你的问题,请参考以下文章