Tabla de contenido
Localizar elementos (findElement)
Posicionamiento del selector CSS
posicionamiento del selector xpath
La diferencia entre el selector CSS y el selector XPath
sendKeys: ingresa el contenido del cuadro de texto
claro: borra el contenido del cuadro de texto
texto: obtiene el contenido de texto del elemento
getText()(obtener contenido de texto general)
getAttribute() (obtener atributo (valor))
La diferencia entre enviar y hacer clic
Localizar elementos (findElement)
Posicionamiento del selector CSS
Primero busque la página especificada y luego confirme el elemento que se ubicará: como el cuadro de búsqueda en la página de inicio de búsqueda de Baidu
Abra las herramientas de desarrollador y haga clic en el elemento:
Encuentre la clase correspondiente, copie el nombre de la clase, llame al método findElement de webdriver y pase la clase a través de By (usando el selector css)
WebElement element = webDriver.findElement(By.cssSelector(".s_ipt"));
Ingrese en el cuadro de texto y use el método sendKeys:
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
public class Main {
public static void main(String[] args) {
ChromeOptions options=new ChromeOptions();
options.addArguments("--remote-allow-origins=*");
WebDriver webDriver=new ChromeDriver(options);
webDriver.get("https://www.baidu.com/");
//定位元素
//找到百度搜索框
WebElement element = webDriver.findElement(By.cssSelector(".s_ipt"));
//输入软件测试
element.sendKeys("软件测试");
}
}
Después de hacer clic en Ejecutar, primero se abrirá la página de búsqueda de Baidu del navegador Chrome y luego ingresará "prueba de software" en el cuadro de texto para buscar.
Más formas de utilizar selectores CSS: (Aprender)
selector de identificación (#id)
Selección de clase (clase)
Selección de etiqueta (nombre de etiqueta)
Selección de descendientes (selector de padres, selector de hijos), etc.
posicionamiento del selector xpath
El posicionamiento del selector xpath es similar al posicionamiento del selector css. Haga clic derecho en la etiqueta para copiar xpath.
WebElement element=webDriver.findElement(By.xpath("//*[@id=\"kw\"]"));
Varios usos del posicionamiento xpath:
Ruta absoluta (/html/head/title (no se usa comúnmente))
camino relativo
Ruta relativa + índice (//form/span[1]/input)
Ruta relativa + valor de atributo (//input[@class="s_ipt"])
Ruta relativa + comodín (//*[@*="su"])
Ruta relativa + coincidencia de texto (//a[text()="news"])
La diferencia entre el selector CSS y el selector XPath
En primer lugar, el selector css es más eficiente que el selector xpath (css está incluido con html, xpath está incluido con DOM (DOM es el intermediario entre js y html))
En segundo lugar, xpath es más poderoso que css, por ejemplo, xpath puede seleccionar múltiples elementos y admite el posicionamiento del texto y el movimiento hacia arriba y hacia abajo.
Manipular objetos de prueba
Los objetos de prueba de uso común en selenio incluyen los siguientes:
clic clic
Por ejemplo, ingrese "pruebas de software" en el cuadro de búsqueda de Baidu y haga clic en Baidu:
WebElement element=webDriver.findElement(By.xpath("//*[@id=\"kw\"]"));
//输入软件测试
element.sendKeys("软件测试");
//找到百度一下按钮
//进行点击
webDriver.findElement(By.cssSelector("#su")).click();
sendKeys: ingresa el contenido del cuadro de texto
Por ejemplo, ingrese "pruebas de software" en el cuadro de búsqueda de Baidu.
WebElement element=webDriver.findElement(By.xpath("//*[@id=\"kw\"]"));
//输入软件测试
element.sendKeys("软件测试");
claro: borra el contenido del cuadro de texto
Por ejemplo, ingrese "pruebas de software" en el cuadro de búsqueda de Baidu y haga clic en Baidu, luego borre el cuadro de texto e ingrese "front-end vue" para buscar
private static void test02() throws InterruptedException {
ChromeOptions options=new ChromeOptions();
options.addArguments("--remote-allow-origins=*");
WebDriver webDriver=new ChromeDriver(options);
webDriver.get("https://www.baidu.com/");
webDriver.findElement(By.cssSelector("#kw")).sendKeys("软件测试");
webDriver.findElement(By.cssSelector("#su")).click();
webDriver.findElement(By.cssSelector("#kw")).clear();
sleep(3000);
webDriver.findElement(By.cssSelector("#kw")).sendKeys("前端vue");
webDriver.findElement(By.cssSelector("#su")).click();
}
texto: obtiene el contenido de texto del elemento
getText()(obtener contenido de texto general)
Por ejemplo, obtenga el primer elemento de búsqueda activa de Baidu en la página de inicio de búsqueda de Baidu:
private static void test03() {
ChromeOptions options=new ChromeOptions();
options.addArguments("--remote-allow-origins=*");
WebDriver webDriver=new ChromeDriver(options);
webDriver.get("https://www.baidu.com/");
//获取到百度热搜第一条的内容
String res = webDriver.findElement(By.xpath("//*[@id=\"hotsearch-content-wrapper\"]/li[1]/a/span[2]"))
.getText();
System.out.println(res);
}
getAttribute() (obtener atributo (valor))
Pase el nombre en getAttribute y podrá obtener el valor
private static void test04() {
ChromeOptions options=new ChromeOptions();
options.addArguments("--remote-allow-origins=*");
WebDriver webDriver=new ChromeDriver(options);
webDriver.get("https://www.baidu.com/");
//获取百度一下的value值
String res= webDriver.findElement(By.cssSelector("#su")).getAttribute("value");
System.out.println(res);
}
enviar enviar
Utilice enviar para buscar "pruebas de software":
private static void test05() {
ChromeOptions options=new ChromeOptions();
options.addArguments("--remote-allow-origins=*");
WebDriver webDriver=new ChromeDriver(options);
webDriver.get("https://www.baidu.com/");
WebElement element=webDriver.findElement(By.cssSelector("#kw"));
element.sendKeys("软件测试");
webDriver.findElement(By.cssSelector("#su")).submit();
}
Pero cuando se utiliza enviar para hacer clic en el botón de hipervínculo: por ejemplo, en las noticias
private static void test06() {
ChromeOptions options=new ChromeOptions();
options.addArguments("--remote-allow-origins=*");
WebDriver webDriver=new ChromeDriver(options);
webDriver.get("https://www.baidu.com/");
webDriver.findElement(By.cssSelector("#s-top-left > a:nth-child(1)")).submit();
}
¡Aparecerá un error como resultado! ! !
Esto se debe a que enviar no admite hipervínculos.
La diferencia entre enviar y hacer clic
Puede utilizar el clic dondequiera que pueda utilizar el envío, pero es posible que no pueda utilizar el envío dondequiera que utilice el clic. Porque hacer clic admite cuadros de texto, hipervínculos, etc., mientras que enviar no admite hipervínculos.