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");
3 Réponses :
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 p >
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.
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.
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 em > exécutable à ajouter dans la variable native PATH
OS .
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 .
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
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.
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.
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