master
王兵 1 year ago
commit 09b539fbf4

8
.gitignore vendored

@ -0,0 +1,8 @@
target/
pom.xml.tag
pom.xml.releaseBackup
pom.xml.versionsBackup
pom.xml.next
release.properties
*.iml
.idea/

@ -0,0 +1,59 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>start-chrome-driver</artifactId>
<version>1.0-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>8</source>
<target>8</target>
</configuration>
</plugin>
</plugins>
</build>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<maven.test.skip>true</maven.test.skip>
</properties>
<dependencies>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>4.11.0</version>
</dependency>
<!-- <dependency>-->
<!-- <groupId>org.seleniumhq.selenium</groupId>-->
<!-- <artifactId>selenium-api</artifactId>-->
<!-- <version>4.11.0</version>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>org.seleniumhq.selenium</groupId>-->
<!-- <artifactId>selenium-chrome-driver</artifactId>-->
<!-- <version>4.11.0</version>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>org.seleniumhq.selenium</groupId>-->
<!-- <artifactId>selenium-remote-driver</artifactId>-->
<!-- <version>4.11.0</version>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>org.seleniumhq.selenium</groupId>-->
<!-- <artifactId>htmlunit-driver</artifactId>-->
<!-- <version>4.11.0</version>-->
<!-- </dependency>-->
</dependencies>
</project>

@ -0,0 +1,108 @@
import org.openqa.selenium.By;
import org.openqa.selenium.Dimension;
import org.openqa.selenium.Point;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.devtools.DevTools;
import org.openqa.selenium.devtools.v113.network.Network;
import org.openqa.selenium.devtools.v113.network.model.RequestId;
import org.openqa.selenium.devtools.v113.network.model.ResponseReceived;
import java.time.Duration;
import java.util.Optional;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicReference;
import java.util.function.Consumer;
/**
* https://www.selenium.dev/
* (for test): https://registry.npmmirror.com/binary.html?path=chrome-for-testing/
* https://registry.npmmirror.com/binary.html?path=chromium-browser-snapshots/Win_x64/
* : https://registry.npmmirror.com/binary.html?path=chromedriver/
*/
public class Main {
public static void main(String[] args) throws InterruptedException {
String driverPath = "driver\\chrome114.0.5735.90\\chromedriver.exe";
String chromePath = "driver\\chrome114.0.5735.90\\chrome-win64\\chrome.exe";
System.setProperty("webdriver.chrome.driver", driverPath);
//定义driver
ChromeOptions chromeOptions = new ChromeOptions();
// 去掉测试字样
chromeOptions.setExperimentalOption("excludeSwitches", new String[]{"enable-automation"});
chromeOptions.setBinary(chromePath);
ChromeDriver driver = new ChromeDriver(chromeOptions);
DevTools devTools = driver.getDevTools();
devTools.createSession();
devTools.send(Network.enable(Optional.empty(), Optional.empty(), Optional.empty()));
System.out.println("设置超时时间");
driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(5));
// 设置窗口
// 最大化浏览器窗口
// driver.manage().window().maximize();
System.out.println("设置窗口左上角");
driver.manage().window().setPosition(new Point(0, 0));
System.out.println("设置窗口大小");
driver.manage().window().setSize(new Dimension(700, 500));
System.out.println("设置全屏");
driver.manage().window().fullscreen();
System.out.println("请求地址https://www.baidu.com");
driver.get("https://www.baidu.com");
System.out.println("获取网站标题");
String title = driver.getTitle();
System.out.println("title=" + title);
System.out.println("输入文字");
WebElement kw = driver.findElement(By.id("kw"));
kw.sendKeys("招投标");
System.out.println("休眠1秒");
TimeUnit.SECONDS.sleep(1);
// 点击按钮
System.out.println("点击按钮");
WebElement su = driver.findElement(By.id("su"));
su.submit();
// 等待获取到数据的html发生变化超时时间为5秒
// ExpectedCondition<List<WebElement>> listExpectedCondition = ExpectedConditions.numberOfElementsToBeMoreThan(By.xpath("//*[@id=\"list_content_warp\"]/div"), 0);
// new WebDriverWait(driver, Duration.ofSeconds(5)).until(listExpectedCondition);
// 执行js脚本
// driver.executeScript("alert()");
// 获取源码
System.out.println(driver.getPageSource());
// 监听请求获取对应的requestId
String compareUrl = "https://www.example.com/listPro";
AtomicReference<RequestId> requestId = new AtomicReference<>();
devTools.addListener(Network.responseReceived(), new Consumer<ResponseReceived>() {
@Override
public void accept(ResponseReceived responseReceived) {
if (responseReceived.getResponse().getUrl().equals(compareUrl) && responseReceived.getResponse().getStatus() == 200) {
requestId.set(responseReceived.getRequestId());
}
}
});
// 获取开发者工具中的返回结果
if (requestId.get() != null) {
System.out.println("获取请求接口数据");
String responseBody = devTools.send(Network.getResponseBody(requestId.get())).getBody();
System.out.println(responseBody);
}
System.out.println("休眠5秒");
TimeUnit.SECONDS.sleep(5);
// 关闭浏览器
System.out.println("关闭游览器");
driver.quit();
}
}
Loading…
Cancel
Save

Powered by TurnKey Linux.