目录
一、简介
自动化浏览器操作
二、配置
selenium-java 配置包
启动浏览器,使用谷歌浏览器(需要下载谷歌浏览器驱动)
启动
public class Chromtest {
public static void main(String[] args) {
RemoteWebDriver driver;
//创建配置信息
System.setProperty("webdriver.chrome.driver","D:\\C(RJ)\\Chrome\\Application\\chromedriver.exe");//配置浏览器驱动的位置
ChromeOptions chromeOptions=new ChromeOptions();
chromeOptions.addArguments("--remote-allow-origins=*");//解决 403 出错问题
// 设置为headless模式 (必须) //无头浏览模式
chromeOptions.addArguments("--headless");
//设置浏览器窗口打开大小 (必须)
chromeOptions.addArguments("--window-size=1366,700");
//创建
driver=new ChromeDriver(chromeOptions);
driver.get("url"); //需要打开网站的url
}
}
三、常用API
1、启动浏览器
driver.get("url") driver.navigate().to("url") //不会检查是否出现问题
2、关闭浏览器
driver.quit() //移除对象,相当于关闭 driver.close() //关闭窗口
3、浏览器导航栏的操作(driver.navigate())
driver.navigate() driver.navigate().refresh() 刷新 driver.navigate().to("url") 向地址导航栏输入url driver.navigate().back() 回退
4、获取页面DOM
findElement 相关的第一个节点 (返回WebElement)
findElements 相关的全部节点(返回List<WebElement> )
WebElement webElement=driver.findElement(new By.ByClassName("TopicItem"));
List<WebElement> webElements= driver.findElements(new By.ByClassName("TopicItem"));
WebElement webElements= driver.findElement(new By.ByCssSelector(".cover>a")); //css选择器方式 万能
WebElement webElements= driver.findElement(new By.ByClassName("xx")); //根据类名
WebElement webElements= driver.findElement(new By.ById("xx")); //根据id
四、WebElement 获取到的DOM节点操作
webElement.clear(); //清除文本框的值
webElement.clear(); //点击按钮或者链接
webElement.getText() //获取标签内部文本值 例如<h1>文本值</> 中的 “文本值”
webElement.sendKeys("value"); //输入框输入值
webElement.submit() ; //提交表单 ,当前dom节点是任意一个表单元素即可
webElement.getAttribute(“key”); //得到标签元素的属性
五、调用javascript代码
driver.executeAsyncScript("js") //异步执行js代码 (不阻塞下一行代码的执行) executeScript("js") // 执行当前会阻塞下一行代码的执行
六、常用操作
1、截屏操作
driver.getScreenshotAs() File file= driver.getScreenshotAs(OutputType.FILE);
2、双击
Actions act=new Actions(driver); //获得需要双击的节点 WebElement webElement=driver.findElement(new By.ById("aw"));
//双击节点 act.doubleClick(webElement).build().perform(); // build() 连贯 perform()执行
3、拖拽操作
Actions act=new Actions(driver); //封装driver WebElement scr=driver.findElement(new By.ById("kais"));//需要拖拽的元素 WebElement target=driver.findElement(new By.ById("kais"));//拖拽目的地的元素 act.dragAndDrop(scr,target).perform(); //执行拖拽
4、操作下拉列表(Select)
WebElement make=driver.findElement(new By.ById("make"));//获取下拉列表的Dom节点 Select select=new Select(make); //操作 select.selectByIndex(0); //选择下拉列表对应位置的元素(通过位置选择) select.selectByValue("xx"); //通过标签value值选择 select.selectByVisibleText("xx"); //通过标签文本内容选择
5、操作单选框、多选框、按钮 链接
WebElement dua=driver.findElement(new By.ByCssSelector("form>input"));//获取第一个单选框选项 dua.click();//点击
6、检查属性
WebElement 提供的检查元素 isEnabled() 检查元素是否启用 isSelected() 检查元素是否被选中(单选框、多选框、下拉框) isDisplay() 检查元素是否可见
7、关闭弹窗
需要根据实际情况出发
下面为一打开网站页面就有弹窗的情况(div动画弹窗)
WebElement dua=driver.findElement(new By.ByCssSelector(".close"));//找到弹窗的关闭DOM if(dua.isDisplayed()){ //如果可见(即弹出) dua.click(); //就点击 }
8、获取页面的数据
//获取当前页面信息(便以其他爬虫解析html) String html=driver.getPageSource(); //从无头浏览器中取出html String url= driver.getCurrentUrl() ;//从页面获取url