Java / Selenium RemoteWebDriver / Maven / JUnit - 尝试调用浏览器时获取空会话ID

时间:2012-04-07 00:49:17

标签: java maven selenium junit webdriver

背景/设置:
我在JUnit中有一堆测试类。全部通过Maven和Eclipse配置。每个测试类都实例化一个RemoteWebDriver实例,并在测试类完成执行后在tearDown方法中退出。

当我尝试通过执行“mvn clean install”运行所有测试时,一些测试执行得很好,但其余的都因为以下异常(stacktrace)而失败:

Tests in error: 
  com.tagged.qa.selenium.tests.gifts.GiftsPageTest: Error communicating with the remote browser. It may have died.(..)
  com.tagged.qa.selenium.tests.tags.TagsPageTest: Error communicating with the remote browser. It may have died.(..)
  addFriendsTest(com.tagged.qa.selenium.tests.friends.FriendsTest): Error communicating with the remote browser. It may have died.(..)
  deleteFriendsTest(com.tagged.qa.selenium.tests.friends.FriendsTest): Error communicating with the remote browser. It may have died.(..)
  com.tagged.qa.selenium.tests.statusupdates.StatusUpdatesTest: Error communicating with the remote browser. It may have died.(..)
  com.tagged.qa.selenium.tests.comments.CommentsTest: Error communicating with the remote browser. It may have died.(..)
  com.tagged.qa.selenium.tests.search.SearchPageTest: Error communicating with the remote browser. It may have died.(..)
  com.tagged.qa.selenium.tests.homepage.HomePageTest: Error communicating with the remote browser. It may have died.(..)
  com.tagged.qa.selenium.tests.wink.WinkPageTest: Error communicating with the remote browser. It may have died.(..)
  com.tagged.qa.selenium.tests.profile.ProfilePageTest: Error communicating with the remote browser. It may have died.(..)
  com.tagged.qa.selenium.tests.footerpagestests.TermsOfServiceTest: Error communicating with the remote browser. It may have died.(..)

Tests run: 18, Failures: 0, Errors: 11, Skipped: 0

检查target / surefire-reports /中的日志是否有失败导致我这样做:

org.openqa.selenium.remote.UnreachableBrowserException: Error communicating with the remote browser. It may have died.
Caused by: org.openqa.selenium.WebDriverException: Session ID may not be null.

当测试执行正在进行时,我注意到浏览器(在我的情况下是firefox)试图打开但是在一秒钟内退出。 Selenium服务器记录没有会话ID。它尝试了几次并退出尝试。之后,管道中的所有其他测试由于相同的原因而失败。

令人困惑的是,当我尝试单独运行这些测试时,这个问题不会发生,但是当我尝试使用maven一起运行所有这些时,这种情况一直发生。请帮忙吗?

3 个答案:

答案 0 :(得分:0)

我不知道这是否会有所帮助,但是我无法通过maven使用任何超过3.x的firefox版本(来自我使用的内存3.18)。使用更高版本时,我出现了症状。

我尝试了一切,但承认失败,只是安装和使用旧版本。

至少我们的硒测试工作正常,我们继续做实际的工作。

答案 1 :(得分:0)

我不确定,但通常当我在运行一组测试时看到事情失败,并且在我进行单一测试时通过时,匪徒通常是:

1)线程问题。这些测试是多线程的吗?如果是这样,可能存在某种资源争用。

2)tearDown问题。在tearDown中是否发生了一些事情,导致浏览器处于不良状态,导致新浏览器无法正常启动?

抱歉,我没有更多的帮助,我不使用Maven和Eclipse来推动我的Selenium测试。

答案 2 :(得分:0)

在我的这段代码中遇到同样的问题。

        WebDriver augmentedDriver;
        if(BrowserConfig.getHubURL().equalsIgnoreCase("none"))
            augmentedDriver = getDriver();
        else augmentedDriver = new Augmenter().augment(getDriver());

        LOGGER.info("Just before capture: ");
        LOGGER.info(augmentedDriver.toString());
        byte[] screenshot = ((TakesScreenshot) augmentedDriver).getScreenshotAs(OutputType.BYTES);

想象出在启动画面之前,在流程中调用了driver.quit()。这个b