web自动化(java+selenium+maven)
1.selenium环境搭建
我这里用jdk1.8和maven3.3.9
配置pom.xml文件
//设置编码格式
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
//selenium依赖
<dependencies>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.14.0</version>
</dependency>
</dependencies>
下载webdriver,下载版本要和浏览器版本一致(去自己电脑浏览器设置里看版本号,只看第一位,比如我的112.0.1722.39,只需要看112,下112版本就行)
可以去selenium官网,但会比较慢!
建议去淘宝镜像下载,下载地址:https://npm.taobao.org/mirrors/
下载好了以后,在创建的maven项目下面创建一个新的文件夹DriverExe专门来放chromedriver.exe应用程序(后面要指定路径得时候,放在这里使用相对路径比较好)
2.实例化Webdriver对象
可能出现的报错:如果你本地环境变量中path配置过webdriver,那么会默认从你环境变量里的路径去找,版本和浏览器版本不一致就会报错。(我没配置)
我们现在需要做的是去配置一个环境变量,或者是使用system.property去指定一个环境变量。
//启动ChromeDriver()
System.setProperty("webdriver.chrome.driver","DriverExe\\chromedriver.exe");
//向上转型
WebDriver driver = new ChromeDriver();
3.简单写一个demo
//访问网页
driver.get("https://www.baidu.com");
//添加线程休眠等待3秒
Thread.sleep(3000);
//访问网易云音乐
driver.navigate().to("https://music.163.com");
Thread.sleep(3000);
driver.navigate().back();
//最大化浏览器窗口
driver.manage().window().maximize();
此时后台打开了很多进程,需要用taskkill /f /im chromedriver.exe
命令杀死chromedriver.exe进程
当然我们可以调用driver.quit()关闭浏览器,同时可以杀死进程。
driver.close()杀不死进程的。
4.模拟用户使用百度进行搜索的操作
public static void main(String[] args) throws InterruptedException {
//启动ChromeDriver()
System.setProperty("webdriver.chrome.driver","DriverExe\\chromedriver.exe");
//向上转型
WebDriver driver = new ChromeDriver();
//访问网页
driver.get("https://www.baidu.com");
//添加线程休眠等待3秒
Thread.sleep(1000);
//最大化浏览器窗口
driver.manage().window().maximize();
Thread.sleep(1000);
//1.输入框输入selenium
WebElement searchInput = driver.findElement(By.cssSelector("#kw"));
searchInput.sendKeys("selenium");
Thread.sleep(1000);
//2.提交搜索
driver.findElement(By.cssSelector("#su")).click();
Thread.sleep(3000);
//3.清理搜索框,重新输入 Rose 进行搜索
//此时的搜索框已经在上一次提交搜索的时候刷新过了,需要重新定位
WebElement searchInput2 = driver.findElement(By.cssSelector("#kw"));
searchInput2.clear();
searchInput2.sendKeys("Rose");
Thread.sleep(1000);
driver.findElement(By.cssSelector("#su")).click();
//3.断言验证
Thread.sleep(3000);
//关闭浏览器并杀死chrome进程
driver.quit();
}
注意点:
1.Thread.sleep()是为线程添加一个休眠时间,这里是为了方便看到效果。
2.编程思路:先去页面找对应的元素id,根据元素id定位元素,然后在进行相应的操作,我们一般在页面上的操作无非就是输入+清空删除+点击,那么我们在搜索框输入内容就用sendKeys(),点击就用click(),清空用clear(),这些方法idea会提示。想了解更多可以自己去看源码。