环境:
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>${selenium.version}</version>
</dependency>
java 版本 11
chromeDriver
下载地址
我使用的版本:
https://storage.googleapis.com/chrome-for-testing-public/129.0.6668.58/win64/chromedriver-win64.zip
需要安装chrome浏览器
chrome版本:
129.0.6668.58以及129.0.6668.59
重点:chromeDriver和Chrome版本必须对应
也使用过webdrivermanager来控制版本,感觉不好用
代码:
java
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;
import java.time.Duration;
/**
* @author :gxg
* @date :2024/9/19 15:55
* @description:
*/
public class SeleniumTest {
public static void main(String[] args) {
// 设置 ChromeDriver 路径
System.setProperty("webdriver.chrome.driver", "C:\\Users\\test\\Downloads\\chromedriver-win64\\chromedriver-win64\\chromedriver.exe"); // Windows
ChromeOptions options = new ChromeOptions();
// options.addArguments("--headless");// 如需无头模式,取消此行注释
WebDriver driver = new ChromeDriver(options);
driver.get("https://www.selenium.dev/selenium/web/web-form.html");
driver.getTitle();
driver.manage().timeouts().implicitlyWait(Duration.ofMillis(500));
WebElement textBox = driver.findElement(By.name("my-text"));
WebElement submitButton = driver.findElement(By.cssSelector("button"));
textBox.sendKeys("Selenium");
submitButton.click();
// 以上是官网demo,可以改写成自己的登录逻辑
WebElement submitButton = wait.until(ExpectedConditions.presenceOfElementLocated(By.className("className")));
submitButton.click();
WebElement usernameField = wait.until(ExpectedConditions.presenceOfElementLocated(By.id("userName")));
usernameField.sendKeys(username);
WebElement passwordField = driver.findElement(By.id("password"));
passwordField.sendKeys(password);
WebElement loginButton = driver.findElement(By.id("loginButton"));
loginButton.click();
// 获取所有 cookie
Set<Cookie> cookies = driver.manage().getCookies();
System.out.println("所有 cookie:");
for (Cookie cookie : cookies) {
System.out.println(String.format("名称: %s, 值: %s, 域: %s, 路径: %s, 过期: %s",
cookie.getName(), cookie.getValue(), cookie.getDomain(),
cookie.getPath(), cookie.getExpiry()));
}
// 获取特定的 cookie
Cookie specificCookie = driver.manage().getCookieNamed("token");
WebElement message = driver.findElement(By.id("message"));
message.getText();
driver.quit();
}
}