Chromedriver未在硒测试中加载页面

one*_*ill 12 selenium selenium-chromedriver selenium-webdriver

我正在遇到一个异常场景,使用chromedriver.exe和一些我在Selenium帮助下编写的单元测试.当执行使用chromedriver的第一个测试时,浏览器将启动并且测试通过.

但是,对于使用chromedriver的所有以下测试,浏览器无法成功导航到URL.

浏览器即时启动字符数据; 出现在地址栏中(就像在第一个有效的测试中一样),然后将正确的URL插入地址栏.但是,页面不载入,你得到的标准Chrome 无法显示此网页提供与两个按钮的浏览器的身体/帆布消息重装更多.

这是一个已知的问题?

我使用以下版本:

Selenium:2.41.0.0
Chromedriver.exe:2.9.0.0
Visual Studio 2013:12.0.30110.00 Update 1

我在我的ChromeTestDriver类中有以下Initialize方法,它在Setup方法(又名TestInitialize)中为所有测试调用:

ChromeDriverService chromeDriverService = ChromeDriverService.CreateDefaultService(DriverPath);
var chromeOptions = new ChromeOptions();

chromeDriverService.Port = DriverPort; // 9999 - this is the port for the driver, not the webpage 

webDriver = new ChromeDriver(chromeDriverService, chromeOptions);
webDriver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(10));
webDriver.Manage().Timeouts().SetScriptTimeout(TimeSpan.FromSeconds(10)); 
Run Code Online (Sandbox Code Playgroud)

我在Cleanup方法(又名Teardown)中有以下代码用于所有测试:

TestDriver.CloseWindow();  
TestDriver.Quit();
Run Code Online (Sandbox Code Playgroud)

以下异常被搞砸:

OpenQA.Selenium.NoSuchWindowException:没有这样的窗口:目标窗口已经关闭

如果我能提供更多信息,请告诉我.

编辑 我发现在Chrome发生故障之前必须先运行IE测试.通常,会发生以下情况.Chrome测试运行正常.然后运行IE测试.在此之后,所有Chrome测试都会失败.

进一步编辑 另一个不同寻常的方面是,一旦Chrome被Selenium用于网站玷污,我就再也无法在Chrome中加载网站了.也就是说,如果我在Chrome的地址栏中手动输入网址,则会显示相同的空白页面.

甚至更奇怪,如果我跑Fiddler2(基本上是代理),Chrome就会变得毫无污染.它又有效了.

我确信代理不是问题,因为我的系统没有代理,当从我的系统卸载Fiddler2时会出现相同的结果.

我的客户位于不同的大陆,这些症状也可以重现.我们使用GIT进行合作.所以它不仅限于我的系统.

Selenium Google用户小组的用户建议在非常简单的场景中使用webdriver重现错误(即不作为测试框架的一部分).这是我创建的控制台应用程序的代码:

private static string Url = "http://localhost:5556";

static void Main(string[] args)
{
    var chromeWebDriver = GetChromeWebDriver();
    var nav = chromeWebDriver.Navigate();
    nav.GoToUrl(Url);
    Thread.Sleep(3000);
    chromeWebDriver.Quit();
    chromeWebDriver.Dispose();

    var iedriver = GetIeDriver();
    var nav1 = iedriver.Navigate();
    nav1.GoToUrl(Url);
    iedriver.Quit();
    iedriver.Dispose();

    var chromeWebDriver2 = GetChromeWebDriver();
    var nav2 = chromeWebDriver2.Navigate();
    nav2.GoToUrl(Url);
    chromeWebDriver2.FindElement(By.LinkText("Login")).Click();

    System.Threading.Thread.Sleep(2000);

    chromeWebDriver2.Quit();
    chromeWebDriver2.Dispose();

    Console.ReadLine();
}

private static IWebDriver GetIeDriver()
{
    InternetExplorerDriverService internetExplorerDriverService =
        InternetExplorerDriverService.CreateDefaultService(
            @"H:\BW\packages\Selenium.WebDriver.IEDriver.2.41.0.1\content");
    InternetExplorerOptions internetExplorerOptions = new InternetExplorerOptions();
    internetExplorerDriverService.Port = 9999;
    IWebDriver webdriver = new InternetExplorerDriver(internetExplorerDriverService, internetExplorerOptions);
    return webdriver;
}

private static IWebDriver GetChromeWebDriver()
{
    var chromeDriverService =
        ChromeDriverService.CreateDefaultService(
            @"H:\BW\packages\Selenium.WebDriver.ChromeDriver.2.10.0.0\content");
    var chromeOptions = new ChromeOptions();
    chromeDriverService.Port = 7777;
    IWebDriver chromeWebDriver = new ChromeDriver(chromeDriverService, chromeOptions);
    return chromeWebDriver;
}
Run Code Online (Sandbox Code Playgroud)

Shy*_*ala 0

尝试使用 Chromedriver v2.7

因为我也面临同样的问题