Chromedriver Pas le Chargement de la Page en Sélénium Tests

Je suis en train de vivre une exception scénario à l'aide de chromedriver.exe avec quelques tests unitaires que je suis en train d'écrire, avec l'aide de Sélénium. Lorsque le premier test qui utilise la chromedriver s'exécute, le navigateur s'allume et le test passe.

Cependant, pour tous les tests suivants qui utilisent le chromedriver, le navigateur n'a pas réussi à accéder à l'URL.

Le navigateur incendies, momentanément les personnages de données; apparaissent dans la barre d'adresse (comme il l'a fait dans le premier test qui a travaillé), puis la bonne URL est inséré dans la barre d'adresse. Néanmoins, la page ne se charge jamais et vous obtenez le standard chrome Cette page web n'est pas disponible message dans le corps/toile du navigateur avec les deux boutons recharger et plus.

Est-ce un problème connu?

Je suis en utilisant les versions suivantes:

Sélénium: 2.41.0.0
Chromedriver.exe: 2.9.0.0
Visual Studio 2013: 12.0.30110.00 Mise À Jour De 1

J'ai le texte suivant Initialiser méthode dans mon ChromeTestDriver classe qui est appelé dans la méthode de Configuration (aka TestInitialize) pour tous les tests:

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)); 

J'ai le code suivant dans la méthode de Nettoyage (aka Démontage) pour tous les tests:

TestDriver.CloseWindow();  
TestDriver.Quit();

L'exception suivante obtient chucked:

OpenQA.Le sélénium.NoSuchWindowException: pas de fenêtre: fenêtre cible déjà fermé

Laissez-moi savoir si je peux donner plus d'infos.

Modifier
J'ai observé que IE test à exécuter en premier avant le Chrome ne parvient pas. En général, les actions suivantes se produisent. Un Chrome test se passe bien. Ensuite, un test IE fonctionne. Par la suite, tous Chrome tests échouent.

Modifier
Un autre aspect inhabituel à ce que, une fois que chrome a été souillé par du Sélénium pour le site, je ne peux plus charger le site web dans google Chrome. C'est, si j'ai à taper manuellement l'URL dans la barre d'adresse de Chrome, la même page vide s'affiche.

Encore plus étrange encore, si je monte Fiddler2 (qui est en fait un proxy), Chrome devient sans tache. Il fonctionne à nouveau.

Je suis convaincu que les procurations ne sont pas le problème que mon système n'a pas de proxy et le même résultat se produit lorsque Fiddler2 a été désinstallé de mon système.

Les symptômes sont également reproductible par mon client qui se trouve sur un autre continent. Nous collaborons à l'aide de GIT. Donc, il n'est pas confiné à mon système.

D'un utilisateur sur le Sélénium utilisateurs de Google groupe a suggéré de reproduire le bogue en utilisant le webdriver dans un scénario simple (c'est à dire ne faisant pas partie d'un framework de test). Voici le code pour l'application de console que j'ai créé pour cela:

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;
}
Qui ne ressemble pas à TestNG (qui est ce que j'utilise). Qu'utilisez-vous pour vos tests? Avez-vous essayé de faire un cleanup une seule fois, après tous les tests à exécuter? À partir de ma connaissance limitée de Sélénium, l'API pour initialiser ChromeDriver semble différent. Je suis à l'aide de la DesiredCapabilities dc = DesiredCapabilities.chrome(); façon de faire de l'init. Peut-être cela pourrait vous aider. (Je sais que je vais chercher à pailles ici)
Le DesiredCapabilities API semble être à distance. Je suis à court de mes tests en local. Aussi, TestNG est un Java chose, alors que je suis en utilisant .NET. C'est probablement pourquoi l'API est différent. Merci.
Je ne suis pas sûr que c'est vrai - je fais tourner mes tests, aussi bien localement et à l'aide de la DesiredCapabilities API. Ok merci pour la clarification.
Peut-être. Eu un coup d'oeil à cette page ce qui suggère une sorte de client/serveur en raison de son être. Des acclamations.
Version de Chrome? Utilisez-vous un proxy? Si vous laissez le Sélénium ouvrir un Chrome fenêtre, placer un point d'arrêt là-bas, alors il s'arrête une seconde, et manuellement utiliser Chrome instance de naviguer quelque part...obtenez-vous le même problème?

OriginalL'auteur onefootswill | 2014-04-01