有没有办法加快Selenium Server的加载时间?

根据设计,Selenium会在每次运行新测试时生成Firefox配置文件的新副本。 我发现这个复制时间是一个相当大的瓶颈,特别是在运行100次测试时。 (重新复制配置文件需要5-15秒)。

有谁知道这有任何覆盖行为? 我更喜欢我的Selenium服务器只重用相同的firefox配置文件。 我知道这违反了“干净地设置你的测试设备”的理念,但这是我愿意采取的捷径,因为我的测试并没有对我的firefox配置文件产生重大影响,足以危及未来的测试。

我同意这是一个问题。 很高兴每次都有一个Firefox进程的新副本,但通过重新生成Firefox配置文件,将启动时间加倍有点过分。 如果您在http://jira.openqa.org上打开错误报告并发送电子邮件至patrick@browsermob.com,我将很乐意确保我们获得解决方案。

PS:我已经为自己解决了这个问题。 我们使用相同的Firefox配置文件,只是核对缓存和cookie数据库。 但我真的应该把这个改变修改回Selenium来源。

这只是将下面的代码移到测试设置之外并进入夹具设置并保持selenium实例的全局(代码假设为NUnit)。

[TestFixtureSetUp()] public void FixtureSetup() { selenium = New DefaultSelenium("localhost", 4444, "*firefox", "http://localhost/"); selenium.Start(); selenium.SetTimeout("30000"); selenium.Open("/"); } 

您的测试设置应该如下所示:

 [SetUp()] public void SetUpTest() { selenium.Open("default.aspx"); selenium.WaitForPageToLoad("30000"); } 

减少加载配置文件的时间的一个小方法是从firefox配置文件中删除较大的文件。 为此,请通过运行命令firefox.exe -p设置自己的配置文件。 完成配置文件后,进入选项并关闭Web测试不需要的缓存和其他绒毛。 然后将您的配置文件复制到新位置并删除不需要的sql文件。 (否则,当您再次打开它时,您将恢复保留配置文件非常小的已删除文件)。 当您开始selenium测试时,请在新位置引用您的个人资料。 在此之前,我在每次测试启动时都复制了50MB的配置文件,现在它复制了3-4MB的配置文件,启动时间几乎是即时的。

同样,这不是再次使用相同配置文件的方法,但它会减少每个配置文件的复制时间。

使用MSTest,我能够让驱动程序只为所有测试打开一个Firefox窗口,而不是通过在ClassInitialize (和Cleanup )中初始化WebDriver而不是TestInitialize打开和关闭每个测试的新窗口:

 static string path; static IWebDriver driver; static string baseURL; [ClassInitialize] public static void ClassInitialize(TestContext context) { DirectoryInfo di = new DirectoryInfo(Directory.GetCurrentDirectory()); path = Path.Combine(di.Parent.Parent.Parent.FullName, "Tests\\bin\\debug\\"); driver = new FirefoxDriver(); baseURL = "http://localhost:5555/"; } [ClassCleanup] public static void ClassCleanup() { driver.Quit(); } 

虽然这是一个老问题! Selenium服务器或RC已经过时但Selenium Webdriver仍然存在同样的问题..通过webdriver启动firefox大约需要30秒。

但正如这里所解释的,有些人解决了这个问题“在禁用未使用的网络适配器(位于控制面板\网络和Internet \网络连接中)之后

它陷入了困境:

 ExtensionConnection connection = connectTo(exe.binary, profileToUse, "localhost"); 

https://groups.google.com/forum/#!topic/selenium-users/a2fNfF-mD_E

虽然它不适合我,但人们可能想要尝试它!

另一种出路可能是:

 FirefoxProfile profile = new FirefoxProfile(); FirefoxBinary binary = new FirefoxBinary(@"path\to\firefox.exe"); FirefoxDriver driver = new FirefoxDriver(binary,profile);