Más de 71 preguntas de entrevista de Critical Selenium sin respuesta

En este tutorial de preguntas de la entrevista de selenio, cubriremos todas las preguntas críticas de las preguntas de la entrevista de Selenium junto con las preguntas de la entrevista del marco de automatización de Selenium avanzado. Este tutorial se divide en tres segmentos:

Preguntas de la entrevista del Selenium Framework

Preguntas avanzadas de la entrevista de selenium

Preguntas de la entrevista de selenio intermedio

NOTA : El enfoque de este tutorial de preguntas y respuestas de la entrevista de Selenium es analizar los cuestionarios más críticos y complejos, ya que es posible que ya conozca los cuestionarios básicos.

Inicialmente, comenzaremos con las preguntas y respuestas de la entrevista de Advance Selenium Framework y luego avanzaremos con las preguntas y respuestas de la entrevista de selenio Crítico / Avanzado y, por último, terminaremos este tutorial con niveles intermedios para que pueda prepararse bien.

Preguntas de la entrevista de Selenium
Preguntas de la entrevista de Selenium

Preguntas de la entrevista del Selenium Framework

Preguntas de la entrevista de Advance Selenium

Preguntas de la entrevista de selenio intermedio

Preguntas de la entrevista del Selenium Framework: 

¿Cuántos tipos populares de marcos de Selenium existen?

Hay cuatro tipos diferentes de marco de Selenium, que son: 

  • Marco del modelo de objetos de página 
  • Marco de modelo de objeto de página híbrida 
  • Marco impulsado por datos 
  • Marco basado en palabras clave 
  • Marco BDD 

¿Cuántos enfoques diferentes existen para diseñar el marco del modelo de objetos de página?

  • Modelo de objeto de página clásico con fábrica de páginas  
  • Modelo de objeto de página personalizado sin fábrica de páginas 

¿Qué es Page Factory en selenio?

PageFactory es una clase de la biblioteca Selenium de un paquete llamado org.openqa.selenium.support que ayuda a diseñar el patrón de diseño de objetos de página en el marco del modelo de objetos de página, que tiene pocas implementaciones como:

  • El método initElements () es básicamente un método estático en la clase Page Factory, a través del cual se pueden inicializar todos los elementos de los localizadores.
  • Necesitamos usar la anotación @findBy para declarar el elemento web mediante diferentes estrategias de localización (es decir, XPath, nombre, id, CSS, etc.)
  • La clase Page Factory tiene un constructor como public PageFactory ()

¿Cuál es la diferencia de diseño clave entre el modelo de objetos de página clásico y el modelo de objeto de página personalizado?

  • a. En el modelo de objeto de página clásico, usamos Page Factory para construir el modelo de objeto de página manteniendo los localizadores de todas las páginas (WebElements) en la clase Pagefactory usando @findBy anotación y método initElements ().
  • En el Modelo de Objetos de Página Personalizada, diseñamos las diferentes interfaces para almacenar los localizadores de diferentes Páginas para la Web. y también, a diferencia del Modelo de objetos de página clásico aquí, tenemos clases separadas para definir diferentes métodos para diferentes funcionalidades de página y afirmaciones para funcionalidades de página web separadas.

Por lo tanto, cada página web debe tener una interfaz para almacenar localizadores y una clase para las operaciones web a nivel de página y sus declaraciones de respeto.

¿Cuál es el principio de diseño del marco del modelo de objetos de página?

El principio de diseño del marco del modelo de objetos de página se basa en principios o conceptos, que son: 

  • Toda la aplicación web se divide en diferentes páginas web, y cada una de las páginas web representa una clase java / c # separada (los respectivos idiomas en los que está integrado el marco) que representa las funcionalidades de las respectivas páginas web.

Por tanto, todas las acciones de la página (diferentes operaciones de la funcionalidad de la página web) residen en las respectivas clases de página.

  • Los localizadores de la página respectiva se mantienen en interfaces separadas o en las clases de fábrica de páginas.

Mencione las diferencias clave entre el modelo de objetos de página y el modelo de objetos de página híbrido.

La diferencia entre el modelo de objeto de página y el modelo de objeto de página híbrido es que el modelo de objeto de página híbrido se basa en el diseño del marco del modelo de objeto de página junto con las amplias funciones del marco basado en datos y admite una amplia variedad de utilidades de operaciones de datos, como se muestra a continuación. : 

  • Utilidades de datos de Excel
  • Propiedades Utilidades de datos
  • Utilidades de datos de Yaml
  • Utilidades de proveedores de datos de TestNg
  • Utilidades de base de datos
  • Utilidades de datos PDF
  • Utilidades de datos de imagen
  • Utilidades de datos CSV

¿Cuál es el analizador de lenguaje utilizado en el marco Cucumber -BDD?

El analizador de lenguaje utilizado en el marco Cucumber -BDD es Gherkin.

¿Qué es el idioma Gherkin?

Gherkin es DSL (lenguaje específico de dominio) y un lenguaje similar al inglés, que es muy legible y comprensible (es decir, dar (), cuando (), luego (), etc.)

¿Qué quieres decir con dado () en pepinillo?

 El método Given () establece que se da o se establece alguna situación o escenario.

 ¿A qué te refieres con cuando () en pepinillo?

Cuando () significa cuando realiza algunas operaciones.

¿Qué quieres decir con entonces () en pepinillo?

then () se usa como aserciones después de que las operaciones sean realizadas por given (). when ().

¿Qué herramienta de CI utiliza como parte del marco?

Usamos Jenkins (principalmente) como una herramienta de CI de código abierto.

¿Qué herramienta de compilación utiliza como parte del marco?

Usamos herramientas de compilación como Maven / Gradle / ant (se usaba anteriormente).

¿Cuál es la diferencia clave entre maven y Gradle?

Gradle es la versión avanzada de lo que realiza maven y, junto con eso, también podemos crear tareas (como la función que estaba disponible en ANT), por lo que podemos considerar en un alto nivel: 

Gradle = >> Maven + Hormiga 

Como parte de Selenium C #, usamos Gallio como herramienta de construcción. 

¿Cuál es el marco de pruebas unitarias que utilizamos como parte del marco de automatización de Selenium?

Usamos principalmente TestNG / JUnit (JUnit se usa menos hoy en día) como parte del marco de prueba unitario mientras construimos el marco de automatización con Selenium. 

Como parte del marco Selenium C #, utilizamos NUnit / MbUnit como marco de prueba unitario.

¿Qué enfoque se puede tener en cuenta al diseñar las herramientas de informes como parte del marco de Selenium?

Hay varios enfoques de informes que podríamos adoptar al diseñar el marco:

  • Informe TestNg.
  • Informe Xslt.
  • Informe Allure.
  • informe de extensión

Además de la integración de estas herramientas de informes de código abierto, también podemos optar por algunas funciones avanzadas de informes o un panel de control para construir con las siguientes tecnologías y herramientas:

  • Pila ELK, es decir, búsqueda elástica, Logstash y Kibana, que es muy, muy avanzado y de naturaleza robusta y está en uso y en el desarrollo del marco de automatización avanzada.
  • Informes HTML personalizados.

¿Cómo se usa ELK para crear el panel de informes con Selenium Framework?

Existe un principio de diseño básico básico que se utiliza para diseñar el panel de Automatización, que son: 

  • Use TestNg listener e intégrelo a los índices de ElasticSearch para cualquier evento como pasa, falla, omite, etc. 
  • Cree diferentes índices (aprobado, no aprobado y todos los atributos que necesita para informar, como excepciones y sus detalles, etc.).
  • Utilice esos índices para mostrar los datos en el panel de Kibana. 

¿Cómo se crea un informe HTML personalizado?

Puede hacer uso de diferentes interfaces de oyentes y reporteros provistas por TestNg para registrar los eventos y sus respectivos conjuntos de datos y crear HTML utilizando esos conjuntos de datos y las etiquetas HTML en las utilidades de informes.

¿Cuáles son los desafíos a los que se ha enfrentado al desarrollar un marco?

Hay diferentes desafíos que puede mencionar según su experiencia al desarrollar el marco, por ejemplo: 

  • ¿Qué patrón de diseño de lenguaje elegir para comenzar a construir el diseño del marco de automatización (por ejemplo, patrón de diseño de fábrica, patrón de diseño singleton, patrón de diseño abstracto, etc.)
  • Cómo manejar diferentes tipos de instancias de WebDrivers (como Local Driver, RemoteDriver, EventDriver) y si mantener las instancias de controladores como estáticas o no estáticas, etc. y cuáles son sus respectivos enfoques.
  • Integración con diferentes herramientas de terceros, como verificación de imágenes, operaciones basadas en aplicaciones nativas (por ejemplo, una ventana emergente, etc.), integración de herramientas de administración de TestCase como JIRA, TestLink, etc. 
  • Funciones de informes avanzadas.
  • Cómo construir utilidades de características críticas como (algunos ejemplos como Acercar / Alejar, validación de texto de imagen, validaciones de PDF o manejo de diferentes problemas con certificados, implementaciones avanzadas de escucha de TestNG, manejo avanzado de excepciones e informes, etc.) 

Mencione cuáles son todos los componentes de selenio que ha utilizado en su marco de selenio.

  • Selenium WebDriver
  • Rejilla de selenio 

Puedes mencionar en función de tu marco.

¿Cuál es el flujo de su marco de automatización?

Puede mencionar el flujo de ejecución de su marco en función de su flujo de marco y las herramientas que ha utilizado; a continuación se muestra un ejemplo que puede mencionar:

CI (Jenkins) → Herramientas de compilación (Maven /Gradle) → Marco de prueba unitaria (TestNg) → TestNg.xml - >> TestClasses → BaseTest (Cada clase de prueba extiende la clase base como baseTest donde sale @beforeClass / @ BeforeSuite @afterClass, etc.) -> TestMethods → PageClasses → Page Methods → WebUtilities ( clase reutilizable para las utilidades WebAction) - >> Reporting Utils 

¿Qué entiende por marco basado en datos y dónde usamos un marco basado en datos?

Un marco basado en datos es básicamente un marco impulsado por datos. Dicho esto, en el que la aplicación o el tipo de aplicación donde los mismos casos de prueba o escenarios se ejecutan varias veces con los diferentes conjuntos de datos o la fuente o los datos es muy amplio, como en el caso en el que necesitamos interactuar una variedad Fuentes de datos allí utilizamos un marco basado en datos. 

Las diferentes fuentes de datos pueden ser: 

  • A. Utilidades de datos de Excel
  • B. Utilidades de datos de propiedades
  • C. Utilidades de datos de Yaml
  • D. TestNg Data Providers Utils
  • E. Utilidades de base de datos
  • F. Utilidades de datos PDF
  • G. Utilidades de datos de imagen
  • H. Utilidades de datos CSV

¿Cómo explicar el marco de automatización del selenio en una entrevista?

 Hay diferentes enfoques que puede adoptar para explicar el marco de automatización del selenio en una entrevista; El mejor enfoque posible podría ser el enfoque modular, que consiste en dividir la explicación en diferentes módulos separados, como:

  • Tipo de marco y características clave y únicas del marco.
  • Herramientas y tecnologías utilizadas en el marco de Selenium.
  • El flujo de la ejecución del Selenium Framework.
  • Diferentes escenarios críticos manejados por su marco.

Discutamos en detalle: 

Tipo de marco y características clave y únicas del marco:

Debe mencionar el tipo de marco, como marco híbrido, marco de modelo de objeto de página, marco de modelo de objeto de página híbrido, etc. 

Debe mencionar las características únicas del marco, como por ejemplo:

  •  Genere informes avanzados en tiempo real con diferentes herramientas, como Pila de ELK o función de informes HTML personalizados / informes de Allure / informe de extensión.
  • Marco o herramienta de depuración y registro avanzado, como Graylog.
  • Reconocimiento de imagen o extracción de datos de imagen o validación con tecnologías tesseract OCR
  • Integración con múltiples herramientas de terceros, como la herramienta de gestión TestCase TestLink / JIRA, etc., AutoIT / Sikuli para diferentes interacciones de aplicaciones nativas con el marco de Selenium.
  • Implementación de diferentes TestNg avanzados oyentes / reporteros para funciones avanzadas como la activación de pruebas de las pruebas fallidas, la manipulación de la Anotación TestNG en el tiempo de ejecución con IAnnotationTransformer, etc.

Herramientas y tecnologías utilizadas en el marco de Selenium:

Puede mencionar las herramientas y tecnologías utilizadas durante el desarrollo del marco, como:

  • Jenkins
  • Maven
  • TestNG
  • Java como lenguaje
  • Sikuli / AutoIT
  • Tesseract OCR 
  • Pila de ELK
  • Graylog

El flujo de la ejecución del Selenium Framework:

Puede mencionar el flujo de ejecución del marco, es decir, cómo se activan los conjuntos de pruebas y cómo fluye a los casos / métodos de prueba y hasta las utilidades del marco, como webutils, utils de datos, etc. Puede consultar la pregunta anterior donde discutimos cómo explicar el flujo de ejecución del marco de Selenium.

Diferentes escenarios críticos manejados por su marco:

En este módulo, puede discutir las características críticas que se han automatizado como parte de la automatización de su aplicación con su marco. Puede haber muchos casos de uso o características que puede mencionar aquí, como: 

  • Validación de ImageData.
  • Automatización de TestCases a través de la herramienta TestCase Management.
  • Ejecución en paralelo de forma exhaustiva en distintos navegadores y múltiples sesiones desde cada navegador para reducir el tiempo de ejecución.
  • Integración basada en ventanas y automatización de tales casos de uso, etc.

¿Cómo diseñar escenarios de registro en el marco de Selenium?

Puede usar log4j para el registro, o puede usar el registro en tiempo real y la implementación del panel de depuración con Graylog, que básicamente usa ElasticSearch en el backend para obtener detalles de depuración y registro en tiempo real.

¿Cuáles son los patrones de diseño que ha utilizado al diseñar el marco?

Puede utilizar diferentes patrones de diseño según la necesidad y el diseño del marco de automatización, como:

  • Patrón de diseño de fábrica para la implementación del navegador de controladores para múltiples navegadores (Chrome, IE, Firefox, etc.) con diferentes controladores, como controlador local, controlador remoto, controlador de eventos, etc.
  • Patrón de diseño abstracto de fábrica.
  • Patrón de diseño SingleTon para el configurador (carga de datos de propiedades o carga de datos Yaml) para los datos relacionados con la configuración.

Preguntas críticas o avanzadas de la entrevista de selenio:

¿De cuántas formas puede ejecutar su secuencia de comandos de automatización en paralelo?

Hay varias formas y enfoques a través de los cuales puede ejecutar sus scripts de prueba en paralelo, como: 

  • Con TestNG a través de testng.xml y usando paralelo y parámetros de número de subprocesos.
  • Con herramientas de compilación como la herramienta de compilación Maven / Gradle en el siguiente enfoque: 

Maven:

Usando el complemento seguro: 

5

 cierto

Aquí el recuento de bifurcaciones representa el número de hilos paralelos.

Gradle: 

tasks.withType(Test) {
        maxParallelForks = Runtime.runtime.availableProcessors()
    }

¿Cuál es la diferencia entre los métodos setSpeed ​​() y sleep ()?

El método setSpeed ​​() en Selenium básicamente establece la velocidad de ejecución de todas y cada una de las acciones / comandos. 

Entonces, digamos que si estableceSpeed ​​("2000"), entonces cada línea de ejecución se retrasará 2000 milisegundos. 

Por otro lado, Thread.sleep () introducirá un retraso de 3000 milisegundos (suspenderá el hilo para la operación específica). 

Por tanto, sleep () se aplica a 1 operación; por otro lado, setSpeed ​​() introduce el retraso para todas y cada una de las operaciones y, por lo tanto, establece la velocidad de ejecución.  

¿Cómo verificar la presencia de una ScrollBar con Selenium? 

Para verificar la barra de desplazamiento horizontal en una página web con Selenium, usamos Javascriptexecutor de la siguiente manera: 

JavascriptExecutor javascriptExecutor = (JavascriptExecutor) driver;
Boolean presenceOfHorizontalScroll = (Boolean) javascriptExecutor.executeScript("return document.documentElement.scrollWidth>document.documentElement.clientWidth;");

Para verificar la barra de desplazamiento vertical en la página web usando Selenium webdriver también necesitamos usar Javascriptexecutor: 

JavascriptExecutor javascriptExecutor = (JavascriptExecutor) driver;
Boolean presenceOfVerticalScroll  = (Boolean) javascriptExecutor.executeScript("return document.documentElement.scrollHeight>document.documentElement.clientHeight;");

¿Escribir el código para manejar cualquier elemento web oculto en selenium webdriver?

WebElement element=driver.findElement(By.id("id_of_Element"));
JavascriptExecutor jsExecutor = (JavascriptExecutor)driver;
jsExecutor.executeScript("arguments[0].click();", element);

¿Mencionar diferentes enfoques para manejar una ventana emergente basada en ventanas usando Selenium webdriver?

Puede utilizar los siguientes enfoques para manejar aplicaciones basadas en Windows, como ventana emergente: 

  • Con clase de robot 
  • Con clase de llaves en selenio
  • Con la integración de Sikuli
  • Con la integración de AutoIt y Jacob (Java com Bridge) 

¿Cuál es la interfaz principal de WebDriver?

SearchContext

Mencione las diferencias clave entre POI y JXL Jars.

POI admite el formato condicional, el formato de texto enriquecido o el formato xlsx, pero por otro lado, JXL no admite ninguna de estas funciones.

La biblioteca de puntos de interés se mantiene y actualiza en comparación con JXL.

¿Cómo maneja las latencias de su red usando Selenium?

Podemos usar lo siguiente para manejar la latencia de la red usando en Selenium: 

Driver.manage.pageloadingtime

¿Cuáles son los enfoques que tomaría para manejar las pruebas de contenido Ajax con Selenium WebDriver?

AJAX es básicamente JavaScript y XML asíncronos. Toda la comunicación de la aplicación basada en AJAX se basa en llamadas asincrónicas, 

que permiten realizar cualquier evento sin necesidad de actualizar la página web. Cada operación se puede realizar independientemente de otros eventos.

¿Cuáles son los desafíos al trabajar con llamadas AJAX en Selenium WebDriver?

  • R. En AJAX, el código parcial de la página DOM se genera / modifica después de una acción, mientras que la página DOMM permanece igual.
  • B. No es fácil realizar afirmaciones bien definidas en aplicaciones AJAX.
  • C.Tienes que seguir escuchando continuamente los eventos hasta que expire el tiempo y tomar medidas en función de eso, y a veces 
  • se vuelve esporádico por naturaleza.
  • D. El tiempo de espera prolongado hace que los scripts y el navegador sean lentos y, en ocasiones, el navegador puede quedar inactivo.

Para trabajar con la aplicación AJAX, es posible que deba usar esperas para los casos de uso mencionados anteriormente: 

  • Espera implícita
  • Espera explícita 
  • Espera fluida 
  • Velocidad fijada
  • Hilo dormido
  • WebDriverWait

¿Cuál es el enfoque para trabajar con Proxy en Selenium Webdriver?

Hay dos enfoques diferentes que puede manejar proxy en Selenium Webdriver: 

  • Pase la configuración de Proxy en las Capacidades deseadas mientras hace girar las instancias del navegador.
  • Configurando manualmente el proxy del navegador 
Proxy proxy=new Proxy();
proxy.setHttpProxy("localhost:8889");
DesiredCapabilities capabilities=new DesiredCapabilities();
capabilities.setCapability(CapabilityType.PROXY, proxy);
WebDriver driver=new FirefoxDriver(capabilities);

¿Mencionar las formas de lograr la sincronización en WebDriver?

Podemos manejar la sincronización en Selenium webdriver usando diferentes mecanismos de espera: 

  • implícito Espera
  • ExplicitWait con diferentes condiciones esperadas.
  • FluentWait

Mencione las diferencias clave entre TestNg @BeforeTest y @BeforeMethod. 

En TestNg @BeforeTest y @BeoreMethod tiene diferentes aspectos, son:

  • @beforeMethod: este bloque de código, es decir, el método con esta anotación, se ejecuta una vez antes de todos y cada uno de los métodos @test de TestNG
  • @beforetest: El método con esta anotación se ejecuta una vez antes de cada testTag de TestNG.xml.

¿Enumere los diferentes tipos de API de WebDriver presentes en Selenium?

  • Controlador de Chrome
  • Controlador de Firefox
  • Conductor Gecko
  • Conductor de InternetExplorer
  • Conductor de Safari
  • Opera Driver
  • controlador htmlunit
  • PhantomJSDriver
  • Controlador de Android
  • controlador de iPhone
  • EventFiringWebDriver

¿De cuántas formas puede lograr la ejecución sin cabeza con Selenium?

Podemos utilizar los controladores siguientes para lograr la automatización sin cabeza con Selenium: 

  • PhantomJSDriver
  • controlador htmlunit

¿Qué es Fluent Wait In Selenium WebDriver?

Con FluentWait, puede establecer una cantidad máxima de tiempo (digamos 3 minutos) para esperar para cumplir con una condición específica, y durante ese tiempo, sondeará o verificará continuamente con una cierta frecuencia (unidad de tiempo muy pequeña, digamos 3 segundos) para comprobar.

Si se cumple la condición, devolverá verdadero, y si no, lanzará una excepción "ElementNotVisibleException".

La sintaxis de fluentwait en Selenium es:

Wait fluentWait = new FluentWait(driver).withTimeout(100, TimeUnit.SECONDS)
  .pollingevery(2, TimeUnit.SECONDS)
  .ignoring(ElementNotVisibleException.class);

Cuéntenos algunas excepciones de Selenium que haya encontrado mientras trabajaba con Selenium WebDriver.

  • WebDriverException
  • NoSuchElementException
  • StaleElementReferenceException
  • TimeoutException
  • NoAlertPresentException
  • NoSuchWindowException
  • IllegalStateException

¿Cómo se eliminan las cookies en Selenium?

El comando para eliminar las cookies en Selenium es: 

driver.manage().deleteAllCookies();

Explique el enfoque de cómo se lee la variable javascript en selenium webdriver?

Necesitamos usar JavascriptExecutor para poder hacerlo. 

JavascriptExecutor jsExecutor = (JavascriptExecutor) webdriver;
String jsVariable = (String.valueOf(jsExecutor.executeScript("return document.title")));

¿Cómo realizar la operación del navegador Acercar y Alejar en Selenium?

Podemos realizar la operación de acercar y alejar en Selenium utilizando dos enfoques diferentes, tales como: 

  • Clase de robot en selenio
  • Clase de llaves en selenio 

Acercar usando la clase Robot en selenium

Robot robotInstance = new Robot();
//Zoom in

robotInstance.keyPress(KeyEvent.VK_CONTROL);
robotInstance.keyPress(KeyEvent.VK_ADD);
robotInstance.keyRelease(KeyEvent.VK_ADD);
robotInstance.keyRelease(KeyEvent.VK_CONTROL);

Alejar usando la clase Robot en selenium


Robot robotInstance = new Robot();
robotInstance.keyPress(KeyEvent.VK_CONTROL);
robotInstance.keyPress(KeyEvent.VK_SUBTRACT);
robotInstance.keyRelease(KeyEvent.VK_SUBTRACT);
robotInstance.keyRelease(KeyEvent.VK_CONTROL);

Acercar usando la clase Keys en selenium

driver.findElement(By.tagName("html")).sendKeys(Keys.chord(Keys.CONTROL,Keys.ADD));

Alejar usando la clase Robot en selenium

driver.findElement(By.tagName("html")).sendKeys(Keys.chord(Keys.CONTROL,Keys.SUBTRACT));

¿Cómo borrar un campo en selenio sin usar un método clear ()?

Podemos borrar cualquier campo sin usar el método clear () en el siguiente enfoque: 

Podemos usar la clase Keys en Selenium para lograr lo mismo: 

WebElement element = driver.findElement(By.id("id_of_Element"));
element.sendKeys(Keys.chord(Keys.CONTROL, "a"));
element.sendKeys(Keys.DELETE);

¿Cómo volver a ejecutar los casos de prueba fallidos en selenio?

Podemos volver a ejecutar los casos de prueba fallidos en Selenium en los dos enfoques siguientes:

Con TestNG-failed.xml generado automáticamente:

Después de la ejecución de la prueba (ejecutada desde testng.xml), TestNG genera automáticamente TestNG-failed.xml; puede volver a ejecutar el mismo XML para ejecutar las pruebas fallidas SOLAMENTE.

Implementando Interfaz IRetryAnalyzer de testNg :

Al implementar la interfaz IRetryAnalyzer, podemos volver a ejecutar automáticamente los casos de prueba fallidos con TestNg:


If you implement the IRetryAnalyzer you can auto rerun  failed test with TestNg :

public class Retry implements IRetryAnalyzer {
   int counter = 1;
   int retryMaxLimit = 3;
   public boolean retry(ITestResult result) {
       if (counter < retryMaxLimit) {
           counter++;
           return true;
       }
       return false;
   }
}

¿Cómo resaltar un elemento en Selenium WebDriver?

Podemos usar JavascriptExecutor para establecer el color del Webelement mencionando el elemento.


WebElement element = driver.findElement(By.xpath("id_of_the_element"));
JavascriptExecutor jsExecutor = (JavascriptExecutor) driver;
jsExecutor.executeScript("arguments[0].setAttribute('style', 'background: red; border: 2px solid red;');", element);

¿Cómo hacer doble clic en selenio?

Podemos usar la clase Actions en Selenium para realizar las operaciones de DoubleClick de la siguiente manera. El siguiente método toma un argumento en el que debe realizar DoubleClick.

public void doubleClick(By locator) {
		try {
			WebElement element = driver.findElement(locator);
			Actions actions = new Actions(driver).doubleClick(element);
			BASE_LOGGER.info("Performed the double Click on the Element  : " + locator);
		} catch (StaleElementReferenceException e) {
			BASE_LOGGER.error("Element is not attached to the page document " + e.getCause().getMessage());
		} catch (NoSuchElementException e) {
			BASE_LOGGER.error("Element " + locator + " was not found in DOM " + e.getCause().getMessage());
		} catch (Exception e) {
			BASE_LOGGER.error("Element " + locator + " was not clickable " + e.getCause().getMessage());
		}
	}

¿Cómo desplazarse en selenio?

Necesitamos usar Javascript para realizar el desplazamiento, y el siguiente método proporciona un enfoque avanzado para desplazarse al elemento hasta que el elemento sea visible, que se desplaza a la vista: 

public void scrollIntoView(By locator) {

  try {
     JavascriptExecutor executor = (JavascriptExecutor) driver;
     WebElement element = driver.findElement(locator);
     executor.executeScript("arguments[0].scrollIntoView(true);", element);
     BASE_LOGGER
           .info("scrollIntoView operation has been performed for the locator : " + String.valueOf(element));
  } catch (Exception e) {
     String exceptionData = e.getCause().getMessage();
     BASE_LOGGER.error("Error encountered i.e : " + exceptionData
           + " while performing scrollIntoView on the element : " + locator);

  }

}

¿Cómo obtener todos los enlaces de la página en selenium?

Podemos usar By.tagName (“a”) para buscar todos los enlaces que están disponibles en la página, ya que el enlace se refiere a la etiqueta llamada a; el método es el siguiente: 

public List<WebElement> getAllLinks() {

  try {
     List<WebElement> allLinks = driver.findElements(By.tagName("a"));
     int numberOfLinks = allLinks.size();
     BASE_LOGGER.info("Number of Links in the Current Page is : " + numberOfLinks);
     BASE_LOGGER.info("GetAllLinks operation has been performed for the Current Page : ");
     return allLinks;
  } catch (Exception e) {
     String exceptionData = e.getCause().getMessage();
     BASE_LOGGER.error("Error encountered i.e : " + exceptionData
           + " while performing GetAllLinks for the Current Page :");
     return null;
  }

}

¿Cómo encontrar el número de iframes en una página en Selenium?

Podemos usar el siguiente método para encontrar el número de iframes en una página en Selenium:

public int numberOfIframesInPage() {
  try {
     JavascriptExecutor exe = (JavascriptExecutor) driver;
     Integer numberOfIFrames = Integer.parseInt(exe.executeScript("return window.length").toString());
     BASE_LOGGER.info("Number of IFrames in the current Window are : " + numberOfIFrames);
     return numberOfIFrames;

  } catch (Exception e) {
     BASE_LOGGER
           .error("Exception occurred in Finding numberOfIframesInPage with : " + e.getCause().getMessage());
     return 0;
  }

}

¿Cómo cambiar al marco predeterminado en selenium webdriver?

Podemos usar el método switchTo (). DefaultContent () para cambiar al marco predeterminado en Selenium Webdriver: 

public void switchToDefaultFrame() {
  try {
     driver.switchTo().defaultContent();
     BASE_LOGGER.info("Switched to Default Content ");
  } catch (Exception e) {
     BASE_LOGGER.error("Exception Occurred while switching to default Content ");
  }
}

¿Cómo manejar las pestañas en selenio?

Podemos usar una Lista para almacenar todas las pestañas disponibles y usar driver.getWindowHandles () para almacenar las pestañas, y una vez después de esto, podemos manejar las pestañas una por una en el siguiente enfoque, como: 

public void switchToTab(int indexOfTab) {

  try {

     ArrayList<String> tabs = new ArrayList<String>(driver.getWindowHandles());
     driver.switchTo().window(tabs.get(indexOfTab));
     BASE_LOGGER.info("Successfully switched to tab with tab index as : " + indexOfTab);
  } catch (Exception e) {
     String exceptionData = e.getCause().getMessage();
     BASE_LOGGER.error(
           "Unable to Switch to Tab for :" + indexOfTab + " i.e failed with exception as : " + exceptionData);

  }



}

Preguntas de la entrevista de selenio intermedio

¿WebDriver es una clase o una interfaz?

Webdriver es una interfaz donde todas las clases de controladores, como ChromeDriver, FirefoxDriver, crean un objeto y tienen una referencia a la referencia de la interfaz de Webdriver.

¿Cuál es más rápido, XPath o CSS?

CSS es más rápido que XPath. 

¿Por qué CSS es más rápido que XPath?

Cada motor de navegador es diferente y, por lo tanto, la estrategia de análisis y la implementación del motor son diferentes a través del XPath escrito. Es por eso que analizar XPath se vuelve inconsistente a veces; por ejemplo, IE no tiene su propia implementación de motor para analizar XPATH; por lo tanto, Selenium inyecta su propio motor XPath nativo para analizar XPATH en IE. 

¿Qué son los navegadores privilegiados mejorados?

Cuando los navegadores se abren con algunas configuraciones predefinidas (instancia con modo privilegiado especial) como con ciertos Perfiles o Certificados, entonces se llama sesiones de navegadores privilegiados elevados. 

Podemos lanzar un navegador con Selenium con Perfiles o configurar certificados para los mismos fines.

¿Qué es Selenium del navegador sin cabeza y cómo realizamos las pruebas del navegador sin cabeza?

  Un navegador sin cabeza es un programa de simulación para el navegador donde no tenemos una interfaz de usuario, pero aún podemos ejecutar la aplicación bajo prueba en modo invisible. 

 y realice la operación web deseada en segundo plano.

 Usamos controladores de navegador HeadLess como el controlador HTMLUNIT o el controlador phantomJS para realizar pruebas de navegador sin cabeza.

¿Selenio contra titiritero? 

Hay varias diferencias entre Selenium y titiritero (que es una nueva herramienta en comparación con Selenium y desarrollada por Google Chrome DEV)

Discutiremos aquí la comparación entre Selenium VS Puppeteer en diferentes aspectos: 

  • Instalación: titiritero es fácil de instalar en comparación con Selenium.
  • Puppeteer solo admite Chrome a partir de ahora; Selenium admite una amplia gama de navegadores.
  • El idioma nativo del titiritero es Node JS; por otro lado, Selenium admite varios idiomas.
  • Titiritero es más rápido que Selenium.
  • puppeteer está desarrollado y mantenido por Google Chrome Dev y, por otro lado, Selenium tiene un gran apoyo de la comunidad de código abierto

¿HardAssert vs SoftAssert?

Ambos enfoques de afirmación son de TestNg, y cada uno de ellos tiene sus respectivos pros y contras.

  • Después de la declaración HardAssert, la ejecución se detiene (si la aserción falla) y se omite la parte restante del TestScript. Por otro lado, al usar Soft Assert, podemos continuar con el resto de los scripts de prueba incluso si falla alguna afirmación. sucede mientras tanto.  
  • Una vez que falla la aserción dura, informa fallas inmediatas del script, pero para la aserción suave, realiza un seguimiento de todas las fallas de aserción (si las hubiera) dentro del script de prueba y, al final, informa todas las fallas juntas.
  • Soft assert siempre es seguro de usar, y puede probar su script desde el principio hasta el final y observar todos los fallos juntos y resolverlos.

 Cuando se encuentra en las circunstancias en las que necesita tener una afirmación que sea obvia, es decir, sin ese paso, los pasos restantes del script no tienen sentido para ejecutarse, entonces puede poner Hard Assert allí.

 ¿Cómo configurar el tamaño de la ventana en selenio?

Podemos crear un objeto de la clase Dimension y pasar ese objeto al método setSize (): 

Dimension dimension = new Dimension(480,700);
driver.manage().window().setSize(dimension);

¿Cuál es el sistema de control de versiones que usa mientras trabaja con Selenium?

Puede mencionar cualquier VCS que utilice, como Github, SVN, etc.

¿Cómo clonar un repositorio de git?

Podemos clonar el repositorio de git usando:

Git clone repo

¿Cómo extraer el código de repositorio de Git?

Git pull remoteRepoURL branchName

¿Cómo enviar el código a git repo?

Git push remoteURL branchName

¿Cómo configurar el control remoto? 

git remote add ProvideARemoteName remoetURL

¿Cómo verificar los mandos a distancia disponibles?

Git remote -v 

¿Cómo comprobar en qué URL remota se encuentra actualmente? 

git config --get remote.origin.url

¿Cómo puedes integrar tu marco con Jenkins?

Como parte del marco de Selenium Automation, estamos usando herramientas de compilación (como Maven / Gradle) y podemos crear un trabajo de Jenkins y conectar Maven / Gradle proporcionando la configuración con VCS (es decir, Github, etc.)

¿Cuáles son las desventajas de Sikuli?

  • A veces, Sikuli actúa esporádicamente y no es estable y confiable todo el tiempo; digamos que necesitamos realizar algunas acciones en algunas imágenes, y estamos ejecutando un script de prueba paralelo, luego uno de los scripts falla porque, en la ejecución paralela, una imagen se superpone con otra imagen, por lo que la operación en una de las imágenes podría no ser realizado.
  • Sikuli hace que su script de Selenium sea más lento, ya que la integración con cualquier herramienta de terceros hace que la Automatización de Selenium sea más lenta por naturaleza.
  • Siklu realiza operaciones basadas en imágenes y sus ubicaciones, por lo que si esas ubicaciones se cambian, verá fallas en su script de prueba; por lo tanto, no es tan consistente.

¿Cómo realizar pruebas de base de datos usando selenio?

Podemos realizar pruebas de base de datos utilizando selenio en el siguiente enfoque modular: 

  • Conexión de Selenium Database con Java JDBC. 
  • Cree una declaración de base de datos. 
  • Utilice la declaración para ejecutar una consulta SQL y devolver los datos. 
  • Cerrar la conexión a la base de datos.

A continuación, se muestra el fragmento de código para los pasos anteriores: 

Selenium Database Connection Setup con JAVA JDBC y crea una declaración DB: 

   static Connection connection = null;
   private static Statement statement;
   public static String DataBase_URL = "DB_URL";
   public static String DataBase_USER = "DB_UserName";
   public static String DataBase_PASSWORD = "DB_password";



   /* This method Creates the connection with Java JDBC and return it to the Test method to use along with statement 
   */
@BeforeTest
   public void setUp() throws Exception {
       try{

           String dbClass = "com.mysql.cj.jdbc.Driver";
           Class.forName(dbClass).newInstance();
           Connection con = DriverManager.getConnection(DataBase_URL, DataBase_USER, DataBase_PASSWORD);
           statement = con.createStatement();
       }
       catch (Exception e)
       {
           e.getCause().getMessage().toString();

       }


   }

Utilice la declaración para consultar la base de datos con SQL: 

@Test
public void test() {
   try{
       String queryData = "select * from TableName";

       ResultSet res = statement.executeQuery(queryData);
       while (res.next())
       {
           System.out.print(res.getString(1));
           System.out.print(" " + res.getString(2));
       }
   }
   catch(Exception e)
   {
       e.getMessage();
   }
}

Cerrar la conexión de datos: 

Este paso es muy importante; de lo contrario, podemos terminar creando múltiples conexiones de base de datos sin cerrarlas después del uso, lo que puede causar varios problemas. 

Aquí está el fragmento de código para el mismo: 

@AfterTest
public void tearDown() throws Exception {

   if (connection != null) {
       connection.close();
   }
}

¿Cómo verificar el color de fondo y el color de un WebElement usando Selenium? 

Necesitamos usar un método llamado getCssValue ("color") para recuperar el color de un elemento web y getCssValue ("color de fondo") para extraer el color de fondo de un elemento web.

Aquí está el fragmento de código: 

String colour  = driver.findElement(By.xpath("XPATH_of_the_Element")).getCssValue("color");

String backgroundColour = driver.findElement(By.xpath("XPATH_of_the_Element")).getCssValue("background-color");

¿Cómo verificar el tamaño de fuente de un WebElement usando Selenium webdriver? 

Podemos usar el método llamado getCssValue ("tamaño de fuente")

String fontSize  = driver.findElement(By.xpath("XPATH_of_the_Element")).getCssValue("font-size");

¿Cómo verificar el tipo de fuente de un elemento web en Selenium Webdriver? 

String fontSize = driver.findElement(By.xpath("XPATH_of_the_Element")).getCssValue("font-type");

¿Cómo obtener texto de información sobre herramientas en selenium?

Obtener el texto de información sobre herramientas de un WebElement no es más que obtener el atributo de título del Webelement de la siguiente manera: 

public String getToolTipData(By locator){

   WebElement element=driver.findElement(locator);
   return element.getAttribute("title");
}

¿Qué es StaleElementException? 

Elemento obsoleto significa que cuando un elemento web ya no se adjunta con el DOM / página web que estaba presente anteriormente. En ese caso, Selenium arroja una excepción staleelemente.

Esto puede suceder por varias razones múltiples, como debido a las llamadas AJAX o JavaScript que cambian el estado

del elemento lo hace no disponible / separado de DOM.  

Conclusión : Con estos hemos terminado con los Conjuntos de preguntas críticas de la entrevista de Selenium que cubren las preguntas de la entrevista del Marco de Selenium. Lea aquí para obtener más información. conceptos de selenio para comprender la arquitectura de Selenium.

Sobre Debarghya

Yo mismo, Debarghya Roy, soy un ARQUITECTO de ingeniería que trabaja con una compañía de Fortune 5 y un colaborador de código abierto, con alrededor de 12 años de experiencia / conocimientos en varias tecnologías.
He trabajado con diversas tecnologías como Java, C #, Python, Groovy, UI Automation (Selenium), Mobile Automation (Appium), API / Backend Automation, Performance Engineering (JMeter, Locust), Security Automation (MobSF, OwAsp, Kali Linux , Astra, ZAP, etc.), RPA, automatización de ingeniería de procesos, automatización de mainframe, desarrollo de back-end con SpringBoot, Kafka, Redis, RabitMQ, ELK stack, GrayLog, Jenkins y también con experiencia en tecnologías de nube, DevOps, etc.
Vivo en Bangalore, India con mi esposa y tengo pasión por los blogs, la música, tocar la guitarra y mi Filosofía de vida es Educación para Todos, que dio origen a LambdaGeeks. Vamos a conectarnos a través de enlaces: https://www.linkedin.com/in/debarghya-roy/

Deja un comentario

Tu dirección de correo electrónico no será publicada.Los campos obligatorios están marcados *

Frikis Lambda