web-dev-qa-db-fra.com

Pourquoi devons-nous définir la propriété système pour Chrome et IE Navigateur et navigateur Pas pour Firefox

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?

7
SacTan

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 .

6
Sanjay Bhimani

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

1
Amanpreet Kaur

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.

0
Seetaram Hegde