我使用的是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();
每次都会得到一个随机的未使用端口。