代码之家  ›  专栏  ›  技术社区  ›  Aaron Fi

有没有办法加快Selenium服务器的加载时间?

  •  16
  • Aaron Fi  · 技术社区  · 15 年前

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

    有人知道这个的覆盖行为吗?我更希望我的Selenium服务器能够重用相同的Firefox配置文件。我知道这违反了“干净地设置测试设备”的理念,但这是我愿意采取的一个捷径,因为我的测试并没有实质性地改变我的火狐配置文件,足以危害未来的测试。

    5 回复  |  直到 8 年前
        1
  •  8
  •   Patrick Lightbody    15 年前

    我同意这是个问题。每次都有一个新的firefox进程副本是很好的,但是通过重新生成firefox配置文件来增加启动时间有点过分了。如果你打开一个错误报告 http://jira.openqa.org 请发电子邮件至patrick@browsermob.com,我很高兴能确保我们找到合适的解决方案。

    附言:我已经一次性解决了这个问题。我们使用相同的firefox配置文件,只需使用缓存和cookies数据库。但我真的应该把这种变化修补回硒的来源。

        2
  •  6
  •   Gavin Miller    15 年前

    只需将下面的代码移出测试设置并进入fixture设置,并保持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");
    }
    
        3
  •  1
  •   Ben    10 年前

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

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

        4
  •  0
  •   DevDave    12 年前

    使用MSTEST,我可以让司机只打开一个 Firefox 所有测试的窗口,而不是通过初始化 WebDriver 在里面 ClassInitialize (和) Cleanup ),而不是 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();
            }
    
        5
  •  0
  •   Anirudh    11 年前

    虽然现在这是个老问题!!Selenium Server或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);