用selenium4 webdriver + java 开发第一个自动化测试脚本
环境准备:
1.环境准备:
搜有资源可以从百度网盘下载链接:https://pan.baidu.com/s/17Yp3M-eCA429jv3A3KBCkA
提取码:1234
1)安装java环境,我的java version "1.8.0_241"
2)安装eclipse
3)下载selenium webdriver。其他版本可通过链接下载
4_selenium-server-4.jar
4)下载安装浏览器和浏览器驱动,注意浏览器驱动的类型和版本号需要和你计算机上的浏览器版本匹配。
chrome浏览器100版本:1_100.0.4896.127_chr.exe
chrome100版本浏览器对应的浏览器驱动:解压5_chromdriver100.0.1.zip文件夹,其下的chromedriver.exe是浏览器驱动
浏览器驱动器和浏览器通讯,向浏览器发出请求,接收响应。
不同浏览器有各自的浏览器驱动程序,以控制浏览器。浏览器驱动程序可以看做是代理。chrome、firefox、IE等浏览器都有自己的浏览器驱动程序。
根据你要自动化测试使用的浏览器及其版本,下载相应的浏览器驱动程序
需要注意的是,浏览器驱动程序需要和浏览器的版本相匹配。
各浏览器驱动下载路径如下图所示。选择浏览器后,点击【download】,在下载页面选择合适的版本即可。
Install browser drivers | Selenium ,该页面中部内容如下:
我使用的chrome浏览器,我的谷歌浏览器版本100.0.4896.127,所以下载的浏览器驱动是chromdriver100.0.1.zip,
chrome浏览器驱动下载路径:ChromeDriver Mirror
建议和我保持一致,以免版本匹配出现问题,节外生枝。
为了后续测试代码能顺利调用浏览器驱动,可以将下载chromedriver.exe 的路径添加到系统环境变量path中。
2.第一个selneium自动化测试脚本
1)在eclipse中创建java工程
2)将selenium的java依赖包加到工程中
工程中新建文件夹lib,将selenium 包放入文件夹,然后加入到编译路径
工程中新建文件夹,文件夹名随意,我起名为lib
然后将4_selenium-server-4.jar放到你刚才新建的文件夹下;
然后选中该jar文件,点击右键菜单 build path -> add to build path
如果referenced libraries中出现了selenium包,则说明编译路径添加成功了
3)工程中添加浏览器驱动文件(在系统环境变量path添加浏览器驱动的路径也行)
解压5_chromdriver100.0.1.zip后,文件夹下有个chromedriver.exe就是我们需要的浏览器驱动器、
创建resouce文件夹,将浏览器的驱动复制到该文件夹,方便后续使用(该步不做也可以)
4)新建类文件 test1.java,编写selenium代码,并运行
代码如下
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;public class Test1 {public static void main(String[] args) throws InterruptedException {System.setProperty("webdriver.chrome.driver","resource\\chromedriver.exe"); //设置chrome驱动程序的路径System.out.println(System.getProperty("webdriver.chrome.driver"));WebDriver driver = new ChromeDriver(); //初始化一个chrome驱动实例,保存到driver中// WebDriver driver = = new FirefoxDriver(); driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); //隐式等待10秒//最大化窗口driver.manage().window().maximize(); //最大化窗口//设置隐性等待时间driver.get("https://www.runoob.com/html/html-tutorial.html");Thread.sleep(30000); //等待页面加载完成,后续写代码注意,如果页面加载未完成,可能导致页面元素找不到System.out.println("当前打开页面的标题是: "+ driver.getTitle());//关闭并退出浏览器driver.quit();}
运行结果:
5)将junit框架引入到工程中
引入junit框架的方法:
选中项目,点击右键菜单 “Build path”,将junit库添加到libraries中
下面我们可以把之前的工程改为单元测试框架的测试代码奥
最终代码如下:
import java.util.concurrent.TimeUnit;import org.junit.Test;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;public class Test1 {// public static void main(String[] args) throws InterruptedException {@Testpublic void cainiao() throws InterruptedException{System.setProperty("webdriver.chrome.driver","resource\\chromedriver.exe"); //设置chrome驱动程序的路径System.out.println(System.getProperty("webdriver.chrome.driver"));WebDriver driver = new ChromeDriver(); //初始化一个chrome驱动实例,保存到driver中// WebDriver driver = = new FirefoxDriver(); driver.manage().window().maximize(); //最大化窗口//设置隐性等待时间driver.get("https://www.runoob.com/html/html-tutorial.html");Thread.sleep(3000); //等待页面加载完成,后续写代码注意,如果页面加载未完成,可能导致页面元素找不到System.out.println("当前打开页面的标题是: "+ driver.getTitle());//关闭并退出浏览器driver.quit();}}
大家可以添加多个测试用例,用@Test注解的函数会被当做测试用例。
尝试写了个更复杂的例子,可能对新同学来说太难了,但是其实认真看看,也还是可以看懂的奥!
由于链接会打开新的页签,要在新的页面上操作的前提是先切换到那个页签,selenium切换稍微有一丢丢麻烦,这个就是套路留下来以后直接用就好了,这个是有点复杂的。
import static org.junit.jupiter.api.Assertions.assertEquals;import org.junit.jupiter.api.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.WindowType;
import org.openqa.selenium.chrome.ChromeDriver;import junit.framework.Assert;public class p2p {@SuppressWarnings("deprecation")@Testvoid test01() throws InterruptedException {//设置chrome驱动程序的路径System.setProperty("webdriver.chrome.driver","resource\\chromedriver.exe"); System.out.println(System.getProperty("webdriver.chrome.driver"));//打印驱动器路径//初始化一个chrome驱动实例,保存到driver中WebDriver driver = new ChromeDriver(); //最大化窗口driver.manage().window().maximize(); //打开指定url的页面driver.get("https://www.runoob.com/html/html-tutorial.html"); //设置等待3sThread.sleep(3000); //将浏览器窗口句柄保存到originalWindow(以便和后面链接打开的tab页区分)String originalWindow = driver.getWindowHandle();//找到页面上的id值为"s"的元素,保存到searchTextWebElement searchText = driver.findElement(By.id("s")); //向该元素中输入:xpath换行符searchText.sendKeys("xpath\n"); //循环查找直到找到新窗口String secondWindow ="" ;for (String windowHandle : driver.getWindowHandles()) {if(!originalWindow.contentEquals(windowHandle)) {driver.switchTo().window(windowHandle);secondWindow=windowHandle;break; }}//打印页面标题System.out.println("第二个打开页面的标题是: "+ driver.getTitle());//点击链接文字 driver.findElement(By.partialLinkText("xpath")).click();//循环查找直到找到新窗口String thirdWindow = "";for (String windowHandle : driver.getWindowHandles()) {if(!originalWindow.contentEquals(windowHandle) && !secondWindow.contentEquals(windowHandle) ) {driver.switchTo().window(windowHandle);thirdWindow=windowHandle;break; }}//打印页面标题System.out.println("当第三个页面的标题是: "+ driver.getTitle());//使用junit的断言,检查打开页面的url地址是否符合预期Assert.assertEquals("https://www.runoob.com/xpath/xpath-tutorial.html",driver.getCurrentUrl() );Thread.sleep(3000);//关闭并退出浏览器driver.quit();}}
用selenium4 webdriver + java 开发第一个自动化测试脚本相关推荐
- adt eclipse java1.8,android java开发 第一天 之熟习eclipse adt
android java开发 第一天 之熟悉eclipse adt ADT:eclipse中的开发android软件的插件(android development tools)功能:管理android ...
- java开发第一天上班_从第一天开始,如何成为一名优秀的团队合作伙伴,成为初级开发人员
java开发第一天上班 One of the many things you might be asking yourself when starting your software developm ...
- python写web自动化_使用Python+selenium实现第一个自动化测试脚本
原标题:使用Python+selenium实现第一个自动化测试脚本 最近在学web自动化,记录一下学习过程. 此处我选用python3.6+selenium3.0,均用最新版本,以适应未来需求. 环境 ...
- Java开发第一课认识计算机
1.是一种职位的名称 通常是通过计算机的某种编程语言完成软件的开发 2.什么是软件呢 大家眼前的笔记本电脑就是一台电脑 计算机包括两种 1.硬件: 鼠标.键盘.显示器.主机箱内部的 ...
- JAVA开发第一步——JDK 安装
JDK,Java Development Kit. And JRE ,Java Runtime Environment. jdk分64位和32位,可自行去Oracle官网下载 直接百度下载链接 Win ...
- 海康威视Java开发第一步
海康威视-Java G-SISI 2017-04-18 海康威视视频开发 还不知道能不能行,但索性到官网上下载了Demo,结果想运行,一直报错,不过还好,最终搞定. 很多人都没弄成功,可能是因为海康做 ...
- java开发第一天该做些什么?
对于it行业,三.四月是个跳槽高峰期,很多同行们都会选择这个时候跳槽,对于一个新手而言,能够找到一家满意的公司,是件非常开心的事情,但是入职第一天,对于很多新人而言,即使开心,也是非常担心受怕的一天, ...
- 微信小程序拼团(后台java)开发-第一节-产品设计-发起拼团原型和业务简介
最近准备做一个微信小程序(后台Java支撑)的拼团小项目练练手,微信小程序准备用原生的(不涉及支付环节).之前在公司一直用spring boot ,spring cloud这一套,拼团我想分多个文章来 ...
- java adt简单开发,android java开发 第一天 之熟悉eclipse adt-Go语言中文社区
1.下载并安装好android-sdk后(android-sdk里包含了android 1.6 ~ android4.0的所有api,支持各种版本的android) 2.下载adt(android d ...
最新文章
- 测试无数据_无数据驱动自动化测试
- python基础代码技巧_Python 代码优化技巧(二)
- Linux常用命令(第二版) --文件管理命令
- C# MD5,hmacSHA1
- 使用pthread-win32工程编译静态库
- django pdf转html5,python – 在Django站点中将HTML转换为PDF
- sublime中html自动对齐,sublime text怎么对齐HTML代码
- Identity Server 4 原理和实战(完结)_----选看 OAuth 2.0 简介(上)
- asp.net中实现登陆的时候用SSL
- 2021年PMP考试模拟题8(含答案解析)
- Photoshop CS2 视频教程-PS色板(转)
- GRPC入门使用及测试用例源码
- MTSP问题遗传算法解决代码及其案例
- php_enchant,Enchant - [ php中文手册 ] - 在线原生手册 - php中文网
- 批量生成条形码并写入到excel文件
- Java版Spring Cloud B2B2C o2o鸿鹄云商平台--概述
- 深度 | 蚂蚁金融智能平台:让AI在金融场景发挥作用
- 【办公基本软件】万彩办公大师教程丨PDF压缩工具
- python怎么画长方形_画一个漂亮的长方形
- 移动SEO优化指南(附百度内部移动化培训课程)
热门文章
- php中的getfield,ThinkPHP之getField详解_PHP教程
- Object转换Map
- MayaDay5模型模块:摄像机分辨率门渲染
- UART(一)——起始位,停止位,奇偶校验位,数据位等概念
- 虚拟机网络(桥接、NAT、仅主机模式)
- 中国智能养老行业调研分析及发展规划研究预测报告2022-2028年版
- linux+缺少+libc.so.6,libc.so.6 缺失问题
- Kali WPScan的使用(WordPress扫描工具)
- VirtualBox配置时出现:硬件加速配置页中已启用硬件虚拟化,但主机并不支持。需要禁用硬件虚拟化才能启动虚拟机。
- html中插入gif的代码,JavaScript插入动态样式实现代码