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?