Un artículo de 4000 palabras de 0 a 1 utiliza WebDriver+Selenium para realizar la automatización del navegador

prefacio

Selenium es un proyecto de código abierto que puede automatizar el funcionamiento de los navegadores. El propósito original es automatizar las pruebas de las funciones del navegador, pero con el desarrollo del proyecto, las personas también lo utilizan para hacer algunas funciones más interesantes de acuerdo con sus características. es una herramienta de prueba automatizada para la interfaz de usuario. Como se describe en el sitio web oficial de Selenium, Selenium puede automatizar la manipulación del navegador. ¡Se acabó! Lo que quieras hacer con sus habilidades depende totalmente de ti.

Escenas a utilizar

Hay tres escenarios para las pruebas automatizadas de los navegadores:

  • Selenium WebDriver: si desea crear pruebas y suites de automatización de regresión sólidas basadas en el navegador, escalar y distribuir scripts en muchos entornos, entonces necesita usar Selenium WebDriver, un conjunto de enlaces específicos del idioma para controlar los navegadores: eso es lo que significa conducir
  • Selenium IDE: si desea crear secuencias de comandos rápidas de reproducción de errores, crear secuencias de comandos para ayudar a automatizar las pruebas exploratorias, entonces desea utilizar Selenium IDE; Complementos de Chrome, Firefox y Edge que permiten el registro y la reproducción simples
  • Selenium Grid: si desea escalar y administrar múltiples entornos desde un punto central distribuyendo y ejecutando sus pruebas en varias máquinas para que pueda ejecutar fácilmente pruebas en una gran cantidad de combinaciones de navegador/SO, entonces necesita usar Selenium Grid

principio

El propósito de Selenium temprano era realizar pruebas de automatización de UI de aplicaciones web. El método de implementación era inyectar js a través de un servidor de tres partes para lograr el propósito de controlar el comportamiento del navegador. El componente central se llama Selenium-RC (control remoto), que consta de dos partes:

  • Una biblioteca para escribir la lógica del navegador de control en el lado del cliente
  • Implementa un servidor que controla el inicio y apagado del navegador

La estructura es la siguiente

Esta arquitectura resultó ser compleja y tenía muchas limitaciones, tales como:

  • arquitectura compleja
  • Ejecutar scripts de prueba lleva mucho tiempo porque Selenium RC usa comandos de JavaScript como instrucciones para el navegador. Esto puede conducir a un rendimiento deficiente
  • La API no está muy orientada a objetos
  • Los navegadores HTMLUnit sin cabeza no son compatibles (navegadores invisibles)

Las limitaciones de Selenium RC llevaron al desarrollo de un nuevo marco de automatización, Selenium WebDriver. Después de la introducción de WebDriver en 2006, los problemas complejos en RC se pueden resolver y resolver. Selenium combinado con WebDriver simplifica el comportamiento de control del navegador, elimina el servidor en el enlace central y controla directamente el navegador localmente a nivel del sistema. La arquitectura optimizada de la siguiente manera:

Preparación ambiental

Si no desea implementar sus funciones en la capa de codificación, puede descargar el complemento Selenium IDE , que admite la reproducción de grabaciones y la exportación de scripts de procesos.

Si necesita implementar funciones personalizadas más flexibles a través del código, se recomienda usar python y preparar python3 y pip3 para el entorno.

brew install python3

selenio

pip3 install selenium

instalar controladores de navegador configura su sistema para permitir la automatización del navegador. A través de WebDriver, Selenium admite todos los principales navegadores del mercado, como Chrome/Chromium, Firefox, Internet Explorer, Edge, Opera y Safari. Siempre que sea posible, WebDriver utiliza el soporte de automatización integrado del navegador para controlar el navegador.

desarrollar

primer guion

Controle la función de acceso automático del navegador a través de webdriver


def test_eight_components():
    driver = webdriver.Chrome()
    
    driver.get("https://google.com")
    
    title = driver.title
    assert title == "Google"
    
    driver.implicitly_wait(0.5)
    
    search_box = driver.find_element(by=By.NAME, value="q")
    search_button = driver.find_element(by=By.NAME, value="btnK")
    
    search_box.send_keys("Selenium")
    search_button.click()
    
    search_box = driver.find_element(by=By.NAME, value="q")
    value = search_box.get_attribute("value")
    assert value == "Selenium"
    
    driver.quit()

API de controlador web

La API de webDriver para manipular el navegador se puede dividir aproximadamente en dos partes, controlar el comportamiento del navegador, como abrir, cerrar, avanzar, retroceder, actualizar, etc., y controlar los elementos de la página, como hacer clic, ingresar y obtener el contenido del elemento, etc.

navegador

Obtener información del navegador

// title
driver.getTitle(); 
// url
driver.getCurrentUrl();

navegación

//打开
driver.get("https://selenium.dev");

//跳转
driver.navigate().to("https://selenium.dev");

// 后退
driver.navigate().back();

// 前进
driver.navigate().forward();

// 刷新
driver.navigate().refresh();

caja de balas

//根据条件找到页面中的弹框并点击
driver.findElement(By.linkText("See an example alert")).click();

//等待弹框展示并保存到变量中
Alert alert = wait.until(ExpectedConditions.alertIsPresent());

//获得弹框内容文本
String text = alert.getText();

//点击确定按钮
alert.accept();
  

Las funciones de alerta, confirmación y solicitud similares a las cookies pueden admitir la adición y eliminación de cookies.

import org.openqa.selenium.*;
import org.openqa.selenium.chrome.ChromeDriver;

public class addCookie {
    public static void main(String[] args) {
        WebDriver driver = new ChromeDriver();
        try {
            driver.get("http://www.example.com");

            // Adds the cookie into current browser context
            driver.manage().addCookie(new Cookie("key", "value"));
        } finally {
            driver.quit();
        }
    }
}

Frames admite la adquisición y operación de elementos en Frames. Windows WebDriver no distingue entre ventanas y pestañas. Si su sitio abre una nueva pestaña o ventana, Selenium le permitirá usar el identificador de ventana para manejarlo. Cada ventana tiene un identificador único que permanece constante dentro de una sola sesión. Puede obtener el identificador de ventana de la ventana actual con:

driver.getWindowHandle();

elemento

Identificación y uso de elementos en el DOM Gran parte del código de Selenium implica trabajar con elementos web. Esta parte de la función es similar al document.getElementById de escribir el código front-end. La idea es relativamente simple. Es encontrar los elementos en la página y luego realizar la operación de simulación del comportamiento del usuario. Admite posicionamiento absoluto y estrategias de posicionamiento relativo. No es bueno para ID de página, etiquetas y clases complejas. Puede usar el método xPath para el posicionamiento, que es muy flexible. De hecho, no necesita memorizarlo de memoria. Cuando un determinado elemento no es fácil de localizar, puedes ir a la web oficial para comprobar la API para conseguirlo.

posicionamiento relativo


def relative():
    # Above
    email_locator = locate_with(By.TAG_NAME, "input").above({By.ID: "password"})
    # Below
    password_locator = locate_with(By.TAG_NAME, "input").below({By.ID: "email"})
    # Left of
    cancel_locator = locate_with(By.TAG_NAME, "button").to_left_of({By.ID: "submit"})
    # Right of
    submit_locator = locate_with(By.TAG_NAME, "button").to_right_of({By.ID: "cancel"})
    # Near
    email_locator = locate_with(By.TAG_NAME, "input").near({By.ID: "lbl-email"})
    # Chaining relative locators
    submit_locator = locate_with(By.TAG_NAME, "button").below({By.ID: "email"}).to_right_of({By.ID: "cancel"})

posicionamiento tradicional

<ol id="vegetables" style="margin-top: 20px">
      <li class="potatoes">potatoes</li>
      <li class="onions">onions</li>
      <li class="tomatoes"><span>Tomato is a Vegetable</span></li>
    </ol>
    <ul id="fruits">
      <li class="bananas"></li>
      <li class="apples"></li>
      <li class="tomatoes"><span>Tomato is a Fruit</span></li>
     </ul>

def finders():
    # Evaluating entire DOM
    vegetable = driver.find_element(By.CLASS_NAME, "tomatoes")
    print(vegetable)
    # Evaluating a subset of the DOM
    fruits = driver.find_element(By.ID, "fruits")
    fruit = fruits.find_elements(By.CLASS_NAME, "tomatoes")
    print(fruit)
    # Optimized locator
    fruit = driver.find_element(By.CSS_SELECTOR, "#fruits .tomatoes")
    fruit2 = driver.find_element(By.CSS_SELECTOR, "ul .tomatoes")
    print(fruit == fruit2) # True
    # All matching elements
    plants = driver.find_elements(By.TAG_NAME, "li")
    print(plants)
    # Get all the elements available with tag name 'p'
    elements = driver.find_elements(By.TAG_NAME, 'span')
    for e in elements:
        print(e.text)


def xPath():
    ol = driver.find_element(By.XPATH, "/html/body/div/div/ol[1]")
    ol2 = driver.find_element(By.XPATH, "//ol[1]")
    ol3 = driver.find_element(By.XPATH, "//ol[@id='vegetables']")
    print(ol == ol2) # True
    print(ol == ol3) # True
    onions = driver.find_element(By.XPATH, "//ol[1]/li[2]")
    print(onions.text)

Interactúa con 5 comandos básicos:

  • clic (cualquier elemento)
  • enviar claves (solo para bloques de texto y elementos editables de contenido)
  • claro (igual que arriba)
  • enviar (elemento de formulario)
  • seleccionar (seleccionar elemento de la lista)

Obtener información del elemento

Resumir

Este intercambio presenta escenarios de uso de Selenium, principios simples y algunos usos básicos. Y citó un pequeño ejemplo. Después de dominar el contenido anterior, ya puede implementar pruebas básicas de automatización de la interfaz de usuario. Además, los requisitos para las herramientas que pueden hacer algunos rastreadores y automatizar la manipulación del navegador deben personalizarse de acuerdo con los escenarios individuales. Siempre que tenga una naturaleza "perezosa", creo que encontrará muchos escenarios interesantes para usarlo.

Finalmente:  para retribuir a los fanáticos acérrimos, he compilado un video tutorial de aprendizaje de prueba de software completo para usted. Si lo necesita, puede obtenerlo gratis 【保证100%免费】

subprograma de entrevista de prueba de software

¡El banco de preguntas de prueba de software maximizado por millones de personas! ! ! ¡Quién es quién sabe! ! ! El mini programa de cuestionarios más completo de toda la red, puedes usar tu teléfono móvil para hacer los cuestionarios, en el metro o en el autobús, ¡enróllalo!

Se cubren las siguientes secciones de preguntas de la entrevista:

1. Teoría básica de las pruebas de software, 2. web, aplicación, pruebas de funciones de interfaz, 3. red, 4. base de datos, 5. linux

6. web, aplicación, automatización de interfaz, 7. pruebas de rendimiento, 8. conceptos básicos de programación, 9. preguntas de la entrevista de hora, 10. preguntas de prueba abiertas, 11. pruebas de seguridad, 12. conceptos básicos de informática

Cómo obtener el conjunto completo de información:

Supongo que te gusta

Origin blog.csdn.net/myh919/article/details/131404351
Recomendado
Clasificación