Comment se connecter à un navigateur déjà ouvert?
Je voudrais vraiment l'apprécier un guide sur la façon de se connecter à un déjà ouvrir le navigateur à l'aide de Selenium Webdriver via C#.
Ce problème mange environ 30% de mon script développement temps!
source d'informationauteur Andrey
Vous devez vous connecter pour publier un commentaire.
Reportez-vous à Le Sélénium Numéro 18. C'est un très populaire demande de fonctionnalité, qui n'a malheureusement pas été mis en œuvre. Les commentaires suggérer quelques solutions de contournement pour l'instant, je n'ai pas essayé, mais vous pourriez trouver quelque chose d'utile.
Vous pouvez spécifier le démarrage et la fermeture du navigateur dans [TestFixtureSetUp] et [TestFixtureTearDown] et retirez - [SetUp] et [Permutation]. Tous les tests dans [TestFixture] sera exécuté dans le même navigateur. Donc, si vous avez par exemple 10 classes et chacun d'entre eux contient 5 tests, au lieu de 50 navigateur ouvertures et de fermetures, il y aura seulement 10.
Si vous souhaitez ouvrir et de fermer votre navigateur une fois, vous pouvez hériter [TestFixtureSetUp] et [TestFixtureTearDown] les méthodes de la classe de base et si vous avez une classe de test qui est exécutée avant les autres (A_test) et un qui est exécutée en dernier (Z_test) vous pouvez définir et de désactiver certains des indicateurs qui permettra de savoir si nous devrions commencer navigateur ou pas:
La dernière solution de contournement ressemble pas la bonne solution. Althouth première solution de contournement ne pas garantir à 100% les tests d'isolement (d'ailleurs n'oubliez pas d'écrire
driver.Navigate().GoToUrl("http://www.google.com/");
comme première étape pour chaque test). C'est probablement la meilleure solution sera d'exécution parallèle et d'Installation, les méthodes de Démontage pour chaque test.Depuis le temps est votre principal problème et ce n'est pas pris en charge nativement. Pourquoi adopter une approche alternative. Élaborer, mettre en oeuvre une base connect & accédez à la page d'accueil de cas d'utilisation. Puis l'étendre à cette catégorie pour votre plus complexes de cas d'utilisation. Sinon faire de cas de Test de contrôleur, puis utiliser une usine à instancier détaillé de vos tests, en passant le webdriver exemple dans le cas de test.
Vous pouvez exécuter vos tests en parallèle, mais c'est juste une bonne idée lorsque vous êtes prêt à exécuter l'ensemble de vos tests. Ci-dessous est une idée que vous pouvez utiliser pendant que vous êtes en développement et en cours d'exécution nouvellement code compilé.
Sérialiser vos WebDriver {navigateur} instance d'un objet dans un fichier (ou à la mémoire dans un service Windows, si vous préférez), puis récupérer la (dé-sérialiser) ce fichier dans un objet à chaque fois que vous lancez WebDriver. Il faut un peu de massage bien que, de la WebDriver code source.
Quand j'ai le temps, je mettrai à jour ma réponse ici. J'espère Débordement de Pile va me permettre de coller autant de changements de code qu'il a pris. De Plus, je dois encore donner du crédit à Erik dans sa réponse et commentaires. Bien que c'était mon idée pour commencer (pour faire le WebDriver plus rapide).
.NET: la Sérialisation d'objet dans un fichier à partir d'un 3ème partie de l'assemblée (pour faire Selenium WebDriver plus rapide)
==========
Logique Simple:
si l'objet sérialisé le fichier n'existe pas ==> ouvrir le navigateur de l'instance que la normale, et de créer le fichier
si l'objet sérialisé fichier existe ==> désérialiser fichier d'objet ==> set instance du navigateur égal objet désérialisé (coulé correctement bien sûr)
==========
L'autre exigence est que vous mettez dans un état dans votre méthode décorées avec le [Permutation] attribut de sorte que votre navigateur ne se ferme pas lorsque le script (test) finitions. La première fois, il va prendre le temps de l'ouvrir. Mais une fois que la fenêtre du navigateur est ouvert, vous êtes bon pour aller.
vous pouvez utiliser l'exemple de code ci-dessous pour réaliser cette tâche
si un navigateur firefox est ouvert à l'aide d'un web Firefox pilote, vous pouvez utiliser la Télécommande WebDriver utiliser ce navigateur instance.
J'ai tout d'Abord essayer d'initialiser un site Web Distant Pilote, si aucune instance n'est en cours d'exécution, puis essayez de bloquer échouera et le bloc Catch va ouvrir Firefox pilote.
Maintenant, par exemple, votre script ne parvient pas à un endroit précis et que le navigateur reste ouvert.
Maintenant, exécutez à nouveau que le code d'initialisation, le bloc try passer pour le moment et web distant Pilote d'utiliser le navigateur ouvert. (Pas de nouvelle fenêtre de navigateur s'ouvrira).
Mettre cette initialisation dans votre Essai méthode de Démarrage
Ce bloc de code enregistre ma quantité suffisante de temps.
J'ai aussi écrit un blog sur elle.
Vous pouvez le lire ici.
http://www.binaryclips.com/2016/03/selenium-web-driver-in-c-how-to.html