Puis-je exécuter plusieurs instances à la fois(simultanément) avec du sélénium webdriver?
Je suis en train d'utiliser le Sélénium pour automatiser le téléchargement du fichier.
Je v déjà écrit un petit programme avec la sélénium-webdriver qui fonctionne.
Le problème est, il ya des milliers de fichiers doivent être téléchargés, je voudrais exécuter plusieurs instances de navigateur, simultanément, pour accélérer l'automatisation. J'ai donc essayé quelque chose comme ça
var i = 0;
while (i < 10) {
i++;
var driver = new webdriver.Builder()
.forBrowser('firefox')
.build();
//login and upload files......
}
Je m'attendais à cela permettrait de créer 10 instances de navigateur à la fois, et ne l'automatisation simultanément.
Mais en fait... le code ci-dessus crée navigateur instance "un par un", ce qui signifie, ne pas créer une autre instance jusqu'à ce que le précédent se termine.
Je v aussi essayé d'exécuter le programme dans plusieurs shell cas, qui va ouvrir plusieurs instances de navigateur pour moi, mais je ne veux pas faire ça...
execute_script
opération dans votre script?OriginalL'auteur yaquawa | 2015-11-16
Vous devez vous connecter pour publier un commentaire.
Eh bien, vous devez créer plusieurs threads au lieu de boucle, alors vous pouvez commencer chaque téléchargement de fils parallèles. Vous êtes sur la bonne voie. Vous n'avez pas besoin de sélénium de la grille pour atteindre cet objectif.
de recherche sur le multithreading. Vous pouvez commencer avec cette réponse
Il n'est pas juste, vous avez besoin de la grille pour l'exécution de plusieurs sessions de navigateur. Vous pouvez appeler plusieurs sessions de navigateur par juste de la création de plusieurs objets de pilote et de leur gestion. Chaque session sera séparée si vous le souhaitez.
De la grille est de mise à l'échelle comme il y a une limitation sur les pas des instances de navigateur que vous pouvez exécuter en gardant votre performance de la machine intacte et tests stable. Comme plus de 5 chrome, en une seule machine. Si vous voulez faire plus que cela, alors vous devez utiliser le sélénium Grille.
Merci beaucoup! Mais comment puis-je créer plusieurs threads dans node.js?
Regardez cette réponse stackoverflow.com/q/32279574/888070 Ignorer la partie profil , et de voir la mise en œuvre. Dans le nœud que vous n'avez pas besoin de plusieurs threads . Les fonctions sont asynchrones, alors ils l'habitude d'attendre le premier à terminer.
Est-ce que cela ?
C'est un très déroutant de "bonne" réponse. La question est taggés avec JavaScript mais cette réponse dit de regarder jusqu'au multithreading - quelque chose qui n'est pas possible en JavaScript. Il renvoie aussi à un post concernant Java, afin que je puisse voir d'où la confusion vient de. Une partie de cette confusion est un peu résolu dans ces commentaires. Mais ceux Googler ce post à l'avenir, j'ai mis la bonne réponse ci-dessous.
OriginalL'auteur Shamik
C'est exactement le but de Le Sélénium Grille.
OriginalL'auteur user2272115
Vous devez créer une nouvelle instance de la WebDriver et capacités de chaque navigateur que vous souhaitez ouvrir.
La suite va ouvrir Google dans cinq cas distincts de Chrome.
OriginalL'auteur moefinley