为什么在测试套件完成后,多个chromedriver实例仍在运行



我使用的是chrome驱动程序2.1和谷歌chrome 28。Selenium独立服务器2.31。我运行了一组350个测试,最后运行了25个chrome驱动程序实例。

我不知道使用的是什么测试框架,但对我来说,Selenium和MSTest就是这样。问题是,如果[TestInitialize]中的代码运行时出现故障,则不会执行[TestCleanup]属性。正因为如此,由于我在[TestCleanup]中调用driver.Quit(),我最终打开了很多服务器实例,甚至在我们的应用程序中发生了一些巨大的UI更改后,耗尽了服务器机器的内存。

这不仅仅是在chrome驱动程序的情况下。firefox驱动程序也是如此。

如果您忘记使用server.stop()或您的程序在两者之间中断,您可以使用此端口从下次启动服务器

    import org.browsermob.proxy.ProxyServer;

导入以上内容。

    String sePortNumber = System.getProperty("WEBDRIVER_SERVER_PORT_NUMBER");
    if (sePortNumber == null) {
        sePortNumber="0";
    }
    ProxyServer server = new ProxyServer(Integer.parseInt(sePortNumber));
    server.start();

每次都会得到一个随机的未使用端口。

最新更新