原创

java Selenium模拟访问

1、引入依赖

<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-java</artifactId>
    <version>3.14.0</version>
</dependency>

2、示例代码

    /**
     * @author chen xing
     * @description 执行浏览器的模拟访问
     * @param sleepTime 停顿的时间
     * @param executeTime 执行的次数
     * @param graphlessMode 开启无图模式操作
     * @return void
     * @date 2023-06-16 13:38
     */
    private void startEdge(Integer sleepTime, Integer executeTime, boolean graphlessMode)
            throws InterruptedException {
        ChromeOptions options = new ChromeOptions(); // 创建浏览器参数
        // 设置从ChromeDriver中获取属性(处理反爬机制)
        // 设置谷歌浏览器用户数据目录

        // 执行无图浏览器的操作
        if (graphlessMode) {
            options.addArguments("--headless");
        }
        options.addArguments("--disable-gpu");
        options.addArguments("start-maximized");
        options.addArguments("enable-automation");
        options.addArguments("--no-sandbox");
        options.addArguments("--disable-infobars");
        options.addArguments("--disable-dev-shm-usage");
        options.addArguments("--disable-browser-side-navigation");

        // 设置 Chrome driver 的路径
        System.setProperty("webdriver.chrome.driver", "E:\\chenxing\\tools\\chromedriver.exe");

        // 初始化 Chrome driver
        WebDriver driver = new ChromeDriver(options);

        String url = getStartPage();
        // 打开网页
        driver.get(url);

        for (int m = 0; m < executeTime; m++) {
            TimeUnit.SECONDS.sleep(sleepTime);
            WebElement webElement = driver.findElement(By.cssSelector("body"));
            webElement.click(); // 有的时候必须点击一下,下拉才能生效(有的网站是这样,原因未找到)

            for (int i = 0; i < 5; i++) {
                webElement.sendKeys(Keys.PAGE_DOWN);
                TimeUnit.SECONDS.sleep(3);
            }

            WebElement element =
                    driver.findElement(By.className("line-container")).findElement(By.tagName("a"));
            Actions actions = new Actions(driver);
            actions.moveToElement(element).click().perform();
        }

        // 关闭浏览器
        driver.quit();
    }

3、开启无图模式

ChromeOptions options = new ChromeOptions(); // 创建浏览器参数
options.addArguments("--headless");

4、鼠标移动到指定位置并点击

 WebElement element =
                    driver.findElement(By.className("line-container")).findElement(By.tagName("a"));
            Actions actions = new Actions(driver);
            actions.moveToElement(element).click().perform();

5、模拟鼠标滚动

WebElement webElement = driver.findElement(By.cssSelector("body"));
webElement.click(); // 有的时候必须点击一下,下拉才能生效(有的网站是这样,原因未找到)
webElement.sendKeys(Keys.PAGE_DOWN);


js触发模式
//将页面滚动条拖到底部
((JavascriptExecutor)driver).executeScript("window.scrollTo(0,document.body.scrollHeight)");

//移动到元素element对象的“顶端”与当前窗口的“顶部”对齐
((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView();",wm );
((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);",wm );

//移动到元素element对象的“底端”与当前窗口的“底部”对齐
((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(false);", wm);
正文到此结束
本文目录