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 非常慢的主要内容,如果未能解决你的问题,请参考以下文章

selenium 常用api

如何隐藏 Firefox 窗口(Selenium WebDriver)?

爬虫(selenium)

火狐浏览器启动慢?--几点办法

Chrome如何设定webdriver=undefined以避免Selenium检测?

为什么Firefox在SSH上这么慢?