如何使用selenium在不同的应用程序中重用相同的WebDriver

时间:2012-05-24 13:24:47

标签: selenium webdriver selenium-firefoxdriver

我正在写这里询问是否可以初始化WebDriver

WebDriver driver = new FirefoxDriver();

并为许多jar应用程序使用相同的浏览器,所以在其他jar文件中,例如:

int port = ...;
String host = ...;
WebDriver driver = getDriver(host,port);

我问这个问题,因为FirefoxDriver加载和发生的速度很慢,我需要调用许多加载该驱动程序的jar。我认为通过这种方式,只加载一次我的驱动程序,我的总应用程序将快于打开该驱动程序的N次N实例。我希望我的问题清晰明确:)感谢所有人!

编辑: 我看到有可能使用RemoteWebDriver

DesiredCapabilities capability = DesiredCapabilities.firefox();
WebDriver driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), capability);

我该如何使用它?当我必须在localhost中实例化webdriver时:4444?

1 个答案:

答案 0 :(得分:1)

这是the most demanded feature request in Selenium。但是,仍然无法将WebDriver附加到正在运行的浏览器窗口。您在RemoteWebDriver中发现的是在另一台计算机上远程运行测试的可能性。但该计算机仍然需要启动一个新的浏览器窗口。

我猜,您可以将您的应用程序编写为HUB,将所有jar(类)排入队列,启动单个Firefox实例并传递driver引用。这不是一个很好的解决方案,据我所知,还没有人做过。

BUT!在Firefox中启动的大部分时间都是创建一个新的FirefoxProfile。如果您创建了一个专门用于测试的配置文件,并且始终使用此配置文件启动Firefox,则速度会快得多。