2
votes

Est-il possible de définir le fichier Chrome Webdriver comme URL?

J'ai ce code pour définir les propriétés système:

System.setProperty("webdriver.chrome.driver", "https://path_to_file/chromedriver.exe");

Est-il possible de stocker l'exécutable chromedriver dans GitHub et de l'utiliser dans différents projets? Quelque chose comme ceci:

System.setProperty("webdriver.chrome.driver", "src\\main\\resources\\driver\\chromedriver.exe");


2 commentaires

Vous pouvez créer un projet contenant les différentes bibliothèques et pilotes liés à Selenium, puis inclure ce projet dans vos autres projets afin que vous n'ayez à gérer qu'un seul projet en ce qui concerne les versions de pilote, etc. Je ne le recommanderais pas nécessairement mais vous pourriez le faire.


Un doublon possible de CreatePlatformSocket () a renvoyé une erreur: une erreur l'argument a été fourni. (0x2726) lors de la tentative d'accès à chromedriver via le chemin réseau


3 Réponses :


0
votes

Je ne pense pas que ce soit possible parce que:

WebDriver utilisant des protocoles pour communiquer avec le navigateur et connu sous le nom de WebDriver JSON Wire Protocol , qui est en fait un service Web RESTful utilisant JSON sur HTTP .

Voici une explication de son fonctionnement: https://github.com/SeleniumHQ/selenium/wiki/JsonWireProtocol

Donc, en utilisant le pilote comme vous le souhaitez, vous devez exécuter ce driver.exe sur une source externe et vous devez communiquer avec lui via sélénium . La seule façon de faire ce que vous voulez est d'améliorer et d'ajouter autant de codes au code source du sélénium.


0 commentaires

0
votes

Tout d'abord, hhttps: // path_to_file / .. est une URL , appelée par la conversation une adresse Web est une référence à une ressource Web qui spécifie son emplacement sur un réseau informatique et un mécanisme pour le récupérer. Une URL est un type spécifique d ' Uniform Resource Identifier (URI) . Le protocole HTTP active / permet à l'application client (généralement un navigateur Web) de créer des requêtes HTTP contenant le nom du site Web qu'il souhaite contacter pour un échange d'informations.


emplacement de l'exécutable chromedriver

Dans Dépannage - ChromeDriver , il est mentionné que,

Le chemin d'accès à l'exécutable chromedriver doit être défini par la propriété système webdriver.chrome.driver et le binaire chromedriver doit être dans le chemin système.

Ainsi, le client de Selenium s'attend à ce que l'exécutable WebDriver se trouve dans PATH , c'est-à-dire l'emplacement du WebDriver exécutable à ajouter dans la variable native PATH OS .


Conclusion

On peut donc en conclure que il ne sera pas possible de stocker l'exécutable WebDriver dans GitHub et de l'utiliser dans différents projets .


trivia

Même WebDriver exécutable, par exemple ChromeDriver ou GeckoDriver ne sera pas initialisé s’ils sont accessibles à partir d’un chemin réseau. Vous pouvez trouver une discussion détaillée dans CreatePlatformSocket () a renvoyé une erreur: un argument non valide a été fourni. (0x2726) lors de la tentative d'accès à chromedriver via le chemin réseau


1 commentaires

Le pilote n'a pas besoin d'être dans PATH ... il doit simplement être dans PATH s'il n'est pas entièrement spécifié lors de la définition de la propriété. La première moitié de cette réponse explique quelque chose qu'OP savait déjà ... il l'a appelé une URL ... pourquoi expliquez-vous ce qu'est une URL? Cette question aurait dû être dupliquée vers le lien dans votre section trivia.



2
votes

Le WebDriverManager open source peut être la solution la plus proche de ce que vous demandez.

WebDriverManager.chromedriver().setup();
WebDriver driver = new ChromeDriver();

Ce code se chargera de télécharger le bon exécutable du pilote Web pour votre plate-forme si nécessaire et de configurer l'environnement.


0 commentaires