一、查看你Chrome浏览器的版本
在浏览器的地址栏,输入chrome://version/,回车后即可查看到对应版本
二、找到对应的chromedriver版本
2.1 114及之前的版本可以通过点击下载chromedriver,根据版本号(只看大版本)下载对应文件
2.2 116版本通过点击下载chromedriver,便可直接下载压缩包。
2.3 127/128/128版本通过点击进入到 Chrome for Testing availability ,可以看到127 Stable 稳定版本以及更高版本的测试版。
点击Stable,选择对应的驱动下载即可。
三、导入jar包
<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.141.59</version>
</dependency>
四、编写测试类
import org.openqa.selenium.*;
import org.openqa.selenium.Dimension;
import org.openqa.selenium.chrome.ChromeDriver;
import java.io.File;
import java.util.List;
public class Test {
public static void main(String[] args) throws Exception {
System.setProperty("webdriver.chrome.driver", "C:\\Users\\chromedriver.exe");
//打开浏览器
ChromeDriver driver = new ChromeDriver();
// 设置浏览器窗口大小为屏幕大小(模拟全屏)
driver.manage().window().setSize(new Dimension(1920, 1080));
driver.get("https://test.com");
driver.findElement(By.id("username")).sendKeys("");
driver.findElement(By.id("password")).sendKeys("");
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("localStorage.setItem('loginDate', '2024-9-29');");
driver.findElement(By.className("logindo")).click();
Thread.sleep(1000);
driver.get("https://test.com/html");
// 定位到ul元素(通过ID)
WebElement ul = driver.findElement(By.id("myTab"));
// 从ul中获取所有的li元素
List<WebElement> liElements = ul.findElements(By.tagName("li"));
liElements.get(1).findElement(By.tagName("a")).click();
driver.findElement(By.id("qy_name")).sendKeys("");
driver.findElement(By.id("searchDetail")).click();
Thread.sleep(500);
WebElement bodyListElement = driver.findElement(By.id("bodyList"));
WebElement firstTr = bodyListElement.findElement(By.cssSelector("tr:first-child"));
WebElement thirdTd = firstTr.findElement(By.cssSelector("td:nth-child(3)"));
thirdTd.click();
Thread.sleep(500);
// 截取当前窗口的截图
File screenshot = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
// 指定截图保存的路径和文件名
File targetFile = new File("screenshot.png");
// 将截图保存到文件系统中
org.apache.commons.io.FileUtils.copyFile(screenshot, targetFile);
System.out.println("Screenshot saved as " + targetFile.getAbsolutePath());
// 关闭浏览器
driver.quit();
}
}
五、八大元素定位
在 Selenium 中,精确地定位页面元素是进行各种交互操作的基础。以下是一些常见的元素定位方法(Java 示例):
By.id():通过元素的 ID 属性进行定位。
WebElement element = driver.findElement(By.id("elementId"));
By.name():通过元素的 name 属性进行定位。
WebElement element = driver.findElement(By.name("elementName"));
By.className():通过元素的 class 属性进行定位。
WebElement element = driver.findElement(By.className("elementClass"));
By.tagName():通过元素的标签名进行定位。
List<WebElement> elements = driver.findElements(By.tagName("div"));
By.linkText():通过链接的完整文本进行定位。
WebElement element = driver.findElement(By.linkText("链接文本"));
By.partialLinkText():通过链接的部分文本进行定位。
WebElement element = driver.findElement(By.partialLinkText("部分链接文本"));
By.xpath():使用 XPath 表达式进行定位,XPath 是一种强大且灵活的定位方式。
WebElement element = driver.findElement(By.xpath("//div[@class='exampleClass']/input[@name='exampleName']"));
By.cssSelector():通过 CSS 选择器进行定位。
WebElement element = driver.findElement(By.cssSelector("#elementId.exampleClass"));