java selenium selenium-webdriver webdriver webdriver-w3c-spec

java - ¿Cuál es la diferencia entre ChromeDriver y WebDriver en selenio?



selenium selenium-webdriver (1)

Controlador ChromeDriver = nuevo ChromeDriver ();

Si usa el ChromeDriver driver = new ChromeDriver(); la instancia de ChromeDriver que se creará a través de ella solo podremos invocar y actuar sobre los métodos implementados por ChromeDriver y admitidos solo por Chrome Browser . Para actuar con otros navegadores, tenemos que crear específicamente objetos individuales como se muestra a continuación:

  • FirefoxDriver driver = new FirefoxDriver();
  • InternetExplorerDriver driver = new InternetExplorerDriver();

WebDriver Interface

Desde la perspectiva de Selenium , la interfaz WebDriver es similar a un acuerdo que los proveedores de navegadores externos como Mozilla , Chrome , Internet Explorer , Safari , etc., deben cumplir e implementar. Esto a su vez ayudaría a los usuarios finales a usar las API expuestas para escribir un código común e implementar las funcionalidades en todos los Browsers disponibles sin ningún cambio.

Por qué WebDriver driver = new ChromeDriver();

A través del WebDriver driver = new ChromeDriver(); estamos creando una instancia de la interfaz WebDriver y enviándola a ChromeDriver Class . Todos los controladores del navegador como FirefoxDriver , ChromeDriver , InternetExplorerDriver , PhantomJSDriver , PhantomJSDriver , etc. implementaron la interfaz WebDriver (en realidad, la clase RemoteWebDriver implementa la interfaz WebDriver y los controladores del navegador amplían RemoteWebDriver ). Entonces, si usamos el WebDriver driver , podemos usar el controlador ya inicializado (como variable de objeto común) para todos los navegadores que queremos automatizar, por ejemplo, Mozilla, Chrome, InternetExplorer, PhantomJS, Safari.

WebDriver driver = new FirefoxDriver(); driver = new ChromeDriver(); driver = new FirefoxDriver(); driver = new SafariDriver();

WebDriver Interface Trivia WebDriver Interface

Según el escenario actual, tenemos que instanciar las implementaciones de la Interfaz WebDriver directamente. Según la práctica actual, escribimos nuestra secuencia de comandos de prueba automatizada en esta interfaz para que en el futuro podamos intercambiar un navegador con más funciones cuando sea necesario.

Si creamos:

ChromeDriver driver=new ChromeDriver();

Se ejecutarán los métodos del controlador de Chrome.

Y si creamos:

WebDriver driver=new ChromeDriver();

nuevamente se ChromeDriver métodos de ChromeDriver [según la anulación del método].

Entonces, ¿por qué escribimos este último solo durante la ejecución?