为什么Firefox 48的Selenium GECKO驱动程序无法启动服务器?

时间:2016-08-26 13:40:58

标签: c# .net selenium firefox selenium-webdriver

我们在.Net自动化测试项目设置中运行Selenium 2.5.3作为NUnit测试项目。

Firefox 47一切正常。但是使用Firefox 48它停止了工作。 我从github下载了Gecko.exe(版本9)。 我几乎可以让它运行但不完全。

我收到了这些错误: 附加信息:对URL http://localhost:53628/session的远程WebDriver服务器的HTTP请求在30秒后超时。

其他信息:对URL http://localhost:55924/session的远程WebDriver服务器的HTTP请求在30秒后超时。

似乎默认使用随机端口。 所以我手动将其设置为端口7500,在Windows防火墙中打开端口,现在我得到了这个: 其他信息:无法在http://localhost:7500/

上启动驱动程序服务

这是我在WebDriverFactory中的代码:

case WebDriverType.Firefox:
                Log.Info("Starting Firefox ...");

                //string driverPath =
                //    $"{Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase)}\\wires.exe";

                string driverPath =
                    @"C:\Development2\iRePORT\src\test\csharp\Nete.Ireport.EndToEndTests\bin\Debug\geckodriver.exe";

                FirefoxDriverService driverService = FirefoxDriverService.CreateDefaultService();
                driverService.FirefoxBinaryPath = driverPath;
                driverService.Port = 7500;

                FirefoxOptions ffOptions = new FirefoxOptions();
                ffOptions.IsMarionette = true;
                driver = new FirefoxDriver(driverService, ffOptions, TimeSpan.FromSeconds(30));

                // driver = new FirefoxDriver(new FirefoxOptions());

                Log.Info("Started");
                break;

我花了很多时间在这上面,我觉得我很亲密。 有谁知道我遗失了什么?

我现在读了一些让我想到这句话的东西;

driverService.FirefoxBinaryPath = driverPath;

指出Firefox安装使用的内容。 我现在将driverpath和可执行文件名放在driverService构造函数中,如下所示:

case WebDriverType.Firefox:
                Log.Info("Starting Firefox ...");

                //string driverPath =
                //    $"{Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase)}\\wires.exe";

                string driverPath =
                    @"C:\Development2\iRePORT\src\test\csharp\Nete.Ireport.EndToEndTests\bin\Debug";
                string driverExecutableName = "geckodriver.exe";

                FirefoxDriverService driverService = FirefoxDriverService.CreateDefaultService(driverPath, driverExecutableName);
                // Don't do this!!! This is the executable to the Firefox Version executable.
                //driverService.FirefoxBinaryPath = driverPath;
                driverService.Port = 7500;

                FirefoxOptions ffOptions = new FirefoxOptions();
                ffOptions.IsMarionette = true;
                driver = new FirefoxDriver(driverService, ffOptions, TimeSpan.FromSeconds(30));

                // driver = new FirefoxDriver(new FirefoxOptions());

                Log.Info("Started");
                break;

所以现在我回来得到这个错误: 其他信息:无法在http://localhost:7500/

上启动驱动程序服务

如果我有: driverService.Port = 7200; 它说“找不到实体”。我相信这意味着它找不到Gecko.exe。 如果我有: driverService.Port = 7500; 它说: 其他信息:无法在http://localhost:7500/

上启动驱动程序服务

1 个答案:

答案 0 :(得分:0)

尝试Selenium 3.0.0。我也有这个问题,但我最终管理从2.53.1切换到3.0.0的所有事情