Selenium 2 chrome驱动程序在HttpCommandExecutor中失败并显示WebException

时间:2014-11-03 01:30:33

标签: selenium selenium-webdriver selenium-chromedriver

我正在尝试使用

设置自动化测试环境
- TestStack.Seleno v0.8.2  
- TestStack.BDDfy v4.0.0
- Selenium .NET WebDriver 2.43.0.0
- Chrome v38  
- ChromeDriver v2.9  

虽然我能够在chrome驱动程序和chrome浏览器之间建立初始会话握手,但是后续通过chrome驱动程序调用实际Web应用程序会因超时异常而失败。

以下是实例化SelenoHost对象的代码:

       var options = new ChromeOptions();

        Instance.Run(configure => configure
            .WithWebServer(new InternetWebServer(String.Format("http://{0}/portal", IISServerHost)))
            .WithRemoteWebDriver(() => BrowserFactory.Chrome(options))
            .UsingLoggerFactory(new ConsoleFactory()));

如果我调试上面的方法调用,它在SelenoApplication Initialize方法中失败:

    public void Initialize()
    {
        _initialised = true;
        _logger.Debug("Starting Webserver");
        WebServer.Start();
        _logger.Debug("Browsing to base URL");
        Browser.Navigate().GoToUrl(WebServer.BaseUrl); >>> this line fails inside HttpCommandExecutor.CreateResponse() method
    }

无法弄清楚我在这里错过了什么。

顺便说一句,Web应用程序托管在IIS 7.5上,并配置为进行Windows身份验证。

1 个答案:

答案 0 :(得分:2)

使用'no-sandbox'启动chrome解决了这个问题。

以下是最终配置的样子:

var options = new ChromeOptions();  
options.AddArgument("ignore-certificate-errors");  
options.AddArgument("no-sandbox");  

var driverService = ChromeDriverService.CreateDefaultService();
driverService.EnableVerboseLogging = (ChromeDriverVerboseLogigng == "true");
driverService.LogPath = ChromeDriverLogPath;

_SelenoHostLazy.Value.Run(configure => configure
.WithWebServer(new InternetWebServer(String.Format("http://localhost/portal", IISServerHost)))
.WithRemoteWebDriver(() => new ChromeDriver(driverService, options))
.UsingLoggerFactory(new ConsoleFactory()));