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);
正文到此结束