Firefox Webdriver 非常慢
Posted
技术标签:
【中文标题】Firefox Webdriver 非常慢【英文标题】:Firefox Webdriver is extremely slow 【发布时间】:2016-01-09 18:46:36 【问题描述】:我们使用 selenium webdriver dll 设置来运行我的自动化套件。仅在 Firefox 中运行测试时遇到此问题。 Firefox 中的测试运行速度非常慢,加载页面需要 3-4 分钟,但是,当我手动使用 Firefox 浏览器在同一台机器上运行相同的测试时,我没有遇到这种缓慢。有时在 Firefox 上运行自动化时,我们还会看到“连接已重置”页面。此外,相同的测试在 Chrome 和 IE 中运行良好。
我们使用以下环境:
Firefox 版本 28、37(代理设置为使用系统设置)
Webdriver (dlls) 2.45 版
Windows 7
之前我们使用 Firefox 版本 14,16 和 Webdriver 版本 2.37 在 Windows XP 中运行相同的设置,我们没有遇到此问题。
我们使用以下代码调用 Firefox:
Proxy proxy = new Proxy();
proxy.Kind = ProxyKind.System;
FirefoxProfile profile = new FirefoxProfile();
profile.SetProxyPreferences(proxy);
RemoteWebDriver dr = new FirefoxDriver(new FirefoxBinary(@"C:\Program Files (x86)\Mozilla Firefox\firefox.exe"), profile, TimeSpan.FromSeconds(120));
dr.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(3));
dr.Manage().Window.Maximize();
dr.Manage().Cookies.DeleteAllCookies();
dr.Navigate().GoToUrl(WebSiteUrl);
剩余的测试步骤......
请有人帮我解决这个问题。
提前致谢。
【问题讨论】:
这个问题解决了吗?我在 chrome 上遇到了同样的问题。 【参考方案1】:这就是我解决“FirefoxDriver 速度极慢”问题的方法:
FirefoxDriverService service = FirefoxDriverService.CreateDefaultService();
service.Host = "::1";
IWebDriver driver = new FirefoxDriver(service);
以上代码强制geckodriver
使用 IPv6 协议,该协议在与 UI 元素的交互中运行速度快很多倍。
【讨论】:
当我尝试在 BrowserStack/Firefox 中运行测试时遇到了同样的问题。有没有办法在 RemoteWebDriver 实例中传递该主机? 不,您无法控制如何在 BrowserStack 中创建 Firefox 实例。让它跑得快是他们的工作。 为此祝福你。这是一个 10 倍数量级的差异。 当我使用它时,我收到以下错误:OpenQA.Selenium.WebDriverException : Cannot start the driver service on localhost:59346 TearDown : System.NullReferenceException : Driver is null。【参考方案2】:现在可能对你没有任何好处,但我在 Firefox 45 和 Webdriver 2.15 上遇到了同样的问题。问题是隐式等待设置。就我而言,我有:
driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
这一行需要 190 秒(是的,超过 3 分钟!)来执行。删除它会将启动时间缩短到 8 秒以下!
【讨论】:
这与超时无关。它在执行每个命令之前只等待 3-4 秒。以上是关于Firefox Webdriver 非常慢的主要内容,如果未能解决你的问题,请参考以下文章
如何隐藏 Firefox 窗口(Selenium WebDriver)?