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;
}
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
Vous devez vous connecter pour publier un commentaire.
Essayer ce code. Il est simple et il permettra de résoudre votre problème.
//Pour fermer instance du navigateur. Ne pas utiliser la méthode close() la plupart du temps il ne fonctionne pas, puis d'autres Firefox
pilote.quit();
Fermer ferme la fenêtre active et si c'est la dernière fenêtre va ensuite effectuer quit(),
Si votre test a échoué que la session est sans doute mort, de sorte que lorsque vous appelez un proche qu'il ne sait pas où envoyer la commande et ne pas faire n'importe quoi.
Quit arrêter tous les clients si il n'y a pas des sessions actives donc, si vous envoyez un quitter et n'ont pas de sessions actives, il va juste nettoyer
OriginalL'auteur Hariprasad
Essayer avec Chromedriver v2.7
Parce que j'ai trop été confrontés à la même question
OriginalL'auteur Shyamala
Vous pouvez utiliser directement
TestDriver.Quit();
qu'elle aurait pour objet, la fenêtre sera automatiquement fermé, pas besoin d'une méthode supplémentaire dans votre code que j'ai.e laTestDriver.CloseWindow();
si vous n'avez pas affaire avec plusieurs fenêtres ouvertes.Deux choses: 1. Essayez de mettre des adresse IP à la place de localhost, et espère que cela résout le problème. 2. Je voudrais savoir l'Initialiser et de Nettoyage méthodes sont mises en œuvre à l'Assemblée, de la Classe ou au niveau de la Méthode.
OriginalL'auteur Varun Bajpai
Êtes-vous en précisant le même port pour tous vos pilotes? Si oui, c'est probablement ce qui est à l'origine du problème. Dans votre scénario, la IEDriverServer est à l'écoute sur le port 9999. Ensuite, lorsque vous lancez le ChromeDriver, c'est aussi essayer d'utiliser le port 9999, mais ne le peuvent pas, parce que son déjà pris, de sorte que vous obtenez la page ne trouve pas d'erreur.
Essayez de laisser les pilotes de récupérer leur propre port, qui va automatiquement trouver un port à utiliser, et ensuite voir ce qui se passe.
OriginalL'auteur PocketDews
Cela a résolu mon problème en indiquant le numéro de port depuis
ChromeDriver
a commencé avec la déclaration que les connexions locales autorisées et indiquant qu'il utilise un certain port.OriginalL'auteur seleniumlearner
J'ai eu le même problème, et c'est parce que j'ai été en utilisant le mauvais ChromeDriver. C'est mieux si vous téléchargez le pilote à partir de tierce partie du navigateur pilotes sur le site officiel http://www.seleniumhq.org/download/.
OriginalL'auteur grijesh agrawal