Pour Chrome,
public class Chrome {
public static void main(String[] args) {
System.setProperty("webdriver.chrome.driver", "E://chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.get("http://www.google.com");
}
}
pour Firefox,
public class Firefox {
public static void main(String[] args) {
WebDriver driver = new FirefoxDriver();
driver.get("http://www.google.com");
}
}
Pourquoi devons-nous spécifier le system.setProperty
pour Chrome et IE?
J'avais aussi la même question, mais après avoir creusé, j'ai trouvé,
WebDriver
utilise l'approche du navigateur natif. Sélénium offre incorporée pilote pour Firefox mais pas pour les autres navigateurs. Tous les pilotes (Chrome Driver, IE driver, etc.) sont construits en fonction du moteur JS spécial utilisé par chaque navigateur.
Selenium WebDriver
fonctionne très bien avec Mozilla Firefox car il possède un serveur de pilotes intégré. Mais il n'en va pas de même pour Internet Explorer et Google Chrome. Firefox étant le navigateur le plus traditionnel, Selenium WebDriver
ne nécessite aucun utilitaire supplémentaire pour être configuré avant le lancement du navigateur. Le package Selenium fait automatiquement référence à l'emplacement par défaut de firefox.exe. Par conséquent, l'utilisateur n'a pas besoin de définir une autre propriété.
Si vous obtenez le message “le chemin d'accès au fichier exécutable du pilote doit être défini par le WebDriver. c'est à dire. driver system property ”ou son équivalent similaire, cela signifie que vous devez installer les serveurs de pilotes sur votre navigateur. Le serveur de pilotes gère les appels entre les navigateurs et le protocole filaire Selenium.
InternetExplorerDriver
est un serveur autonome qui implémente le protocole filaire de WebDriver
De même, Google Chrome n’a pas de serveur intégré. Vous aurez donc besoin d’un serveur de pilotes Chrome pour communiquer votre code Selenium au navigateur. Vous pouvez télécharger le serveur de pilotes Chrome.
Fondée à partir de ici .
L'implémentation de FirefoxDriver, ChromeDriver, InternetExplorerDriver étant différente, la manière d'instancier l'objet diffère également.
Le pilote Firefox contrôle le navigateur Firefox à l'aide d'un plugin Firefox. Le profil Firefox utilisé est extrait de ce qui est installé sur la machine pour n'inclure que Selenium WebDriver.xpi.
InternetExplorerDriver est un serveur autonome qui implémente le protocole filaire de WebDriver.
ChromeDriver est maintenu/pris en charge par le projet Chromium iteslf. WebDriver fonctionne avec Chrome via le binaire chromedriver (disponible sur la page de téléchargement du projet Chrome). Vous devez avoir à la fois chromedriver et une version de chrome browser installée. chromedriver doit être placé quelque part sur le chemin de votre système pour que WebDriver le détecte automatiquement. Le navigateur Chrome lui-même est découvert par chromedriver dans le chemin d'installation par défaut.
Pour plus de détails, référez-vous à la documentation Selenium
La réponse est simple: chaque navigateur a sa propre implémentation WebDriver et n'est pas géré par le projet Selenium. Par conséquent, pour que Selenium puisse interagir avec le pilote spécifique au navigateur, nous devons spécifier le chemin complet du pilote.
Pourquoi pour Firefox il n’est pas nécessaire de spécifier le chemin du pilote? Dans Selenium 2.0, Selenium RC est toujours présent et supportait firefox. À partir de Selenium 3.0, il n’existe aucun support officiel pour les pilotes spécifiques à un navigateur. Par conséquent, nous devons spécifier le chemin du pilote via System.setproperty pour tous les navigateurs.