commit 09b539fbf4d5a759be69002ac6467977806ee6ee Author: wangbing Date: Sat Sep 30 21:42:29 2023 +0800 init diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e5dba25 --- /dev/null +++ b/.gitignore @@ -0,0 +1,8 @@ +target/ +pom.xml.tag +pom.xml.releaseBackup +pom.xml.versionsBackup +pom.xml.next +release.properties +*.iml +.idea/ diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..25411a2 --- /dev/null +++ b/pom.xml @@ -0,0 +1,59 @@ + + + 4.0.0 + + org.example + start-chrome-driver + 1.0-SNAPSHOT + + + + org.apache.maven.plugins + maven-compiler-plugin + + 8 + 8 + + + + + + + UTF-8 + UTF-8 + 1.8 + true + + + + + + org.seleniumhq.selenium + selenium-java + 4.11.0 + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/java/Main.java b/src/main/java/Main.java new file mode 100644 index 0000000..3c0ca5b --- /dev/null +++ b/src/main/java/Main.java @@ -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> 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 = new AtomicReference<>(); + devTools.addListener(Network.responseReceived(), new Consumer() { + @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(); + } +}