1

背景/设置:
我在 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 一起运行所有这些测试时,这种情况始终如一。请帮忙?

4

3 回答 3

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() 在 getscreenshot 调用之前在流程中被调用。这个b

于 2014-04-23T10:44:36.093 回答
0

我不知道这是否会有所帮助,但我无法通过 maven 使用 3.x 以外的任何版本的 firefox(从我使用 3.18 的内存中)获得 selenium。我在使用更高版本时出现了您的症状。

我尝试了一切,但承认失败并简单地安装并使用旧版本。

至少我们的硒测试奏效了,我们继续做真正的工作。

于 2012-04-07T01:10:50.277 回答
0

我不确定,但通常当我在运行一组测试时看到失败,而在运行单个测试时通过,罪魁祸首通常是:

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

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

抱歉,我无法提供更多帮助,我不使用 Maven 和 Eclipse 来驱动我的 Selenium 测试。

于 2012-04-10T01:22:40.077 回答