selenium for java 基本使用

selenium 使用

maven

  <!-- seleium -->
	 <properties>
        <selenium.version>4.18.1</selenium.version>
    </properties>

    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <version>${selenium.version}</version>
    </dependency>

demo Code

package com.dsp.business.service;

import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.dsp.common.base.BaseConstant;
import org.apache.commons.lang3.time.DateUtils;
import org.openqa.selenium.Cookie;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.devtools.DevTools;
import org.openqa.selenium.devtools.HasDevTools;
import org.openqa.selenium.devtools.v122.network.Network;
import org.springframework.stereotype.Service;

import java.util.*;
import java.util.concurrent.TimeUnit;

@Service
public class LookStudioService {
    public static String REPORT_URL = "https://www.google.com";
    public static String INTERCEPT_URL_SUFFIX = "xxx";
    //待请求接口 batchedDataV2
    String loginURl = "配置 cookie 前";


    public String testDomain() {
        //待配置 cookie 数据
        String oldCookie = BaseConstant.LOOKERSTUDIO_COOKIE;
        //加载驱动
        String rootPath = "driver 位置";
        System.setProperty("webdriver.chrome.driver", rootPath + " driver 名称");
        //设置chrome参数
        ChromeOptions options = new ChromeOptions();
        options.addArguments("--remote-allow-origins=*");
        options.addArguments("--silent");
        //去掉Chrome提示受到自动软件控制
        options.setExperimentalOption("excludeSwitches", new String[]{"enable-automation"});
        //隐身模式(无痕模式)
        options.addArguments("--incognito");
        // 启用 DevTools 关闭自动化检查
        options.setExperimentalOption("excludeSwitches", new String[]{"enable-automation"});
        options.setExperimentalOption("useAutomationExtension", false);
        //谷歌禁用GPU加速
        options.addArguments("--disable-gpu");
        //无头模式,即不启动界面
//            options.addArguments("--headless");
        // 启动浏览器
        WebDriver driver = new ChromeDriver(options);
        try {
            //打开页面前需要先打开登录页,不然COOKIE无法配置
            driver.get(loginURl);
            //组装cookie信息
            WebDriver.Options manage = driver.manage();
            //打开页面前需要先打开登录页,不然cookie会无效
            JSONArray jsonArray = JSON.parseArray(oldCookie);
            for (Object item : jsonArray) {
                JSONObject jsonObject = (JSONObject) item;
                String name = jsonObject.getString("name");
                String value = jsonObject.getString("value");
                String path = jsonObject.getString("path");
                String domain = jsonObject.getString("domain");
                boolean secure = jsonObject.getBoolean("secure");
                Date date = DateUtils.addDays(new Date(), 1);
                Cookie cookie = new Cookie(name, value, domain, path, date, secure);
                manage.addCookie(cookie);
            }
            //获取 DevTools对象
            DevTools devTool = ((HasDevTools) driver).getDevTools();
            //启动开发者工具
            devTool.createSession();
            //添加监听器--异步
            HashMap<String, Object> urlHeaders = new HashMap<>();
            devTool.addListener(Network.requestWillBeSent(), request -> {
                if (request.getRequest().getUrl().contains(INTERCEPT_URL_SUFFIX)) {
                    urlHeaders.put(request.getRequest().getUrl(), request.getRequest().getHeaders());
                    // 你可以根据需要提取特定的请求头信息
                    System.out.println(request.getRequest().getTrustTokenParams());
                }
            });
            HashMap<String, Object> urlResponse = new HashMap<>();
            devTool.addListener(Network.responseReceived(), response -> {
                urlResponse.put(response.getResponse().getUrl(), response.getResponse().getHeaders());
            });
            //监听网络清求
            devTool.send(Network.enable(Optional.empty(), Optional.empty(), Optional.empty()));
            //打开页面
            driver.get(REPORT_URL);
            // 等待页面加载完成,防止页面未加载完成就关闭
            TimeUnit.SECONDS.sleep(5);
            // 获取到最新的 Cookie 更新 oldCookie
            Set<Cookie> cookies = driver.manage().getCookies();
            for (Cookie cookie : cookies) {
                System.out.println("cookie________________________" + cookie);
            }
            // 获取获取新的请求头
            System.out.println("urlHeaders________________________"+urlHeaders);// 处理具体逻辑
        } catch (Exception e) {
            throw new RuntimeException(e);
        } finally {
        	// 执行结束后关闭浏览器
            driver.quit();

        }
        return "test";
    }

}
  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

base 西安内推私信

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值