我创建了一些在localhost上工作得很好的selenium测试,但是当我在appharbor上部署应用程序时,我发现了异常。
此代码抛出了创建InternetExplorerDriver的新实例的异常:
var options = new InternetExplorerOptions();
options.IntroduceInstabilityByIgnoringProtectedModeSettings = true;
Driver = new InternetExplorerDriver(DriverDirectory, options);
以下是例外:
OpenQA.Selenium.WebDriverException: Cannot start the driver service on http://localhost:35187/
at OpenQA.Selenium.DriverService.Start()
at OpenQA.Selenium.Remote.DriverServiceCommandExecutor.Execute(Command commandToExecute)
at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters)
at OpenQA.Selenium.Remote.RemoteWebDriver.StartSession(ICapabilities desiredCapabilities)
at OpenQA.Selenium.Remote.RemoteWebDriver..ctor(ICommandExecutor commandExecutor, ICapabilities desiredCapabilities)
at OpenQA.Selenium.IE.InternetExplorerDriver..ctor(String internetExplorerDriverServerDirectory, InternetExplorerOptions options)
...
请问您可以提出原因,有什么办法可以解决吗?
答案 0 :(得分:2)
添加到Niels的答案,有时您必须下载IE的.exe文件并在webdriver调用中指定它的路径。 如果您之前安装了selenium驱动程序,即在安装期间,它会自动搜索驱动程序。 或者您必须明确下载并提及IE .exe文件的路径。
要下载.exe文件,请访问该链接 http://docs.seleniumhq.org/download/
答案 1 :(得分:1)
为InternetExplorerDriverService指定的端口333属于众所周知的端口号范围:
在大多数系统上,一个众所周知的端口号只能由系统(root)使用 进程或由特权用户运行的程序。 允许驱动程序服务通过不指定一个来选择自己的端口 明确地,或提供可用的端口。
检查几件事:
答案 2 :(得分:1)
由于我无法看到ie驱动程序路径的代码,我将从此开始。在解决方案中添加名为Drivers的文件夹。将ie.exe文件添加到它。
将以下内容添加到驱动程序代码中。我的猜测是,当你从本地主机到AppHarbor时,路径正在发生变化。我用Jenkins和SauceLabs看过这个。使用getBasePath将无论何时安装它都会加载它。
我认为以下是正确的,但尚未经过测试。
InternetExplorerOptions options = new InternetExplorerOptions();
options.IntroduceInstabilityByIgnoringProtectedModeSettings = true;
IWebDriver driver = new InternetExplorerDriver(Path.Combine(GetBasePath, @"Drivers\\"), options);
driver.Navigate().GoToUrl("http://www.somewhere.com");
public static string GetBasePath
{
get
{
var basePath =
System.IO.Path.GetDirectoryName((System.Reflection.Assembly.GetExecutingAssembly().Location));
basePath = basePath.Substring(0, basePath.Length - 10);
return basePath;
}
}