当前位置: 首页 > news >正文

用selenium4 webdriver + java 搭建并完成第一个自动化测试脚本

自动化测试任务:

百度搜索自己的姓名。点击第一个链接(或者第二个),在新的页面上,添加断言,验证你的名字是否存在。

实验资料百度网盘下载路径:

链接: https://pan.baidu.com/s/1nVlHX_ivresul9Thg6Cvjw?pwd=2ydd 提取码: 2ydd 

1.新建一个java工程

打开eclipse,点击菜单 File -> New -> Java Project

输入项目名称,(为了区分作业,请包含自己的姓名) 

2.将selenium 包添加到编译路径

1)在项目上添加文件夹"lib"   ( 文件夹名也可以是其他的,不影响使用)

弹出窗口中指定文件夹名称

2) 将给大家下发资料中的lib文件夹下的“4_selenium-server-4..jar”复制到lib文件夹中

3)将jar包添加到编译路径

选中刚才添加的jar文件。点击右键菜单 build path -> add to build path

如下图所示。则说明selenium已经成功添加到编译路径了

3.将junit到编译路径

为了使用junit框架来编写测试脚本,我们可以把junit添加到工程中来

在工程上点击右键菜单 build path -> configure build path,..

弹出窗口上。在library选项卡下,点击“Add library

系统返回到 java build path 页面。点击【Apply and Close】

此时工程中可以看到junit4了奥

5.将浏览器驱动程序添加到工程中

selenium 并不能直接操作浏览器,它需要通过浏览器驱动程序操作浏览器。

为了便于管理,我们把浏览器驱动程序也放到项目工程中。

这里需要注意,浏览器驱动程序一定要和浏览器一致,是火狐还是edge浏览器,版本是多少,都要弄清楚。

例如,

edge浏览器在网址中输入:edge://version/ 可以查看edge浏览器的版本号

火狐浏览器在网址中输入:about:support 可以查看浏览器版本

本次以火狐浏览器为例说明

新建文件夹“firefoxdriver”

然后把我给大家的firefoxdriver下的“geckodriver-v0.34.0-win32.exe”复制,粘贴该文件夹下

如下所示,火狐浏览器的驱动程序已经放到工程中了,后面我们就可以使用该驱动程序了

4.创建测试文件

在工程src目录上点击右键 New - > class ,添加一个java文件

输入测试类的名称(请大家包含自己的姓名,后面作业提交截图会用到)

5.编写第一个测试用例

1)输入如下图中的矩形框内的代码

2)导包

此时,@Test注解飘红,这是因为还没有将其添加到编译路径上

下面我们来导包。光标悬停在飘红的Test上时,系统会给出若干个快速解决方案。如下所示,选择导入 oig.junit 

导入后,@Test不在飘红了,说明系统已经能识别到该类了。

3) 输入脚本

大家可以复制如下脚本。

复制之前可以看一下我写脚本的过程,对大家编写脚本也有帮助

元素定位,大家可以借助开发中工具(F12可以打开)点选元素,拷贝它的xpath定位方式 和css定位方式

		  System.setProperty("webdriver.gecko.driver", "firefoxdriver\\geckodriver-v0.34.0-win32.exe"); // 设置chrome驱动程序的路径WebDriver driver = new FirefoxDriver(); //实例化浏览器driver.get("https://www.baidu.com/");   //打开百度页面driver.manage().window().maximize();    //最大化窗口driver.findElement(By.xpath("//*[@id=\"kw\"]")).sendKeys("曹红杏");  //搜索框输入 你的名字driver.findElement(By.xpath("//*[@id=\"su\"]")).click();driver.findElement(By.xpath("//*[@id=\"1\"]/div/div[1]/div[1]/h3/a")).click();//切换窗口Object win2 = driver.getWindowHandles().toArray()[1];driver.switchTo().window((String)win2);String text = driver.findElement(By.xpath("/html/body/div[6]/div/div/div[3]/form/div[1]/h3")).getText();Assert.assertEquals("曹红杏", text);

6.运行测试用例

选中要运行的测试用例执行

由于脚本中未考虑测试程序和被测程序的同步问题。有的页面还没有加载完成。测试程序就试图定位,导致元素定位不到,junit执行会出错

7. 三种同步方式

大家可以使用任意一种同步方式,使得脚本正常运行

强制等待

Thread.sleep(n);   停顿n毫秒

sleep可能抛出异常,异常可以自己处理,即使用try..catch捕获,也可以throw抛出,交给调用者处理

隐式等待

隐式等待时间也叫全局等待时间,并设置有超时时间;

即脚本运行到此处时,在等待时间内进行轮询,直到页面元素出现方继续向下运行, 若在超时时间内仍有元素未出现,则不再等待,脚本继续往下运行。

driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(3)); 隐式等待具有全局性,对所有的元素定位都有效果

显示等待

显式等待是针对于某个特定的元素设置的等待时间, 在设置时间内,元素变得可用,则继续执行后续操作;如果等待时间后元素仍然不可用,则抛出NoSuchElementException异常。

例如:

WebDriverWait wait =new WebDriverWait(driver, 5); wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath("//*@id='1']/div/div[1]/h3/a")));

8.窗口切换

百度搜索时,点击第一个链接,会打开一个新的页面。如果希望到新的页面上继续操作。

则需要先切换到该页面上奥。然后才能在该页面上定位元素,进行操作。

          Object win2 = driver.getWindowHandles().toArray()[1];
          driver.switchTo().window((String)win2);

相关文章:

  • 什么是 金字塔缩放(Multi-scale Input)
  • iscsi服务端安装及配置
  • 【Unity笔记】Unity + OpenXR项目无法启动SteamVR的排查与解决全指南
  • Dataway在Spring Boot中的引入以及使用教程
  • OpenHarmony OS 5.0与Android 13显示框架对比
  • flutter_slidable 插件使用
  • 精益数据分析(15/126):解锁数据分析关键方法,驱动业务增长
  • 使用Python+OpenCV对视频抽帧保存为JPG图像
  • MongoDB常用命令
  • 【JAVA】十三、基础知识“接口”精细讲解!(二)(新手友好版~)
  • uniapp-商城-33-shop 布局搜索页面以及u-search
  • 云原生--基础篇-3--云原生概述(云、原生、云计算、核心组成、核心特点)
  • 【2025最新Java面试八股】如何理解MySQL的MVCC机制?
  • DeepSeek和Excel结合生成动态图表
  • 「数据可视化 D3系列」入门第十二章:树状图详解与实践
  • K8S探针的应用
  • Rook 部署 Ceph 集群及 Kubernetes 存储对接实战
  • 【微服务】SpringBoot制作Docker镜像接入SkyWalking详解
  • Anaconda 与 Miniconda 的差异详解
  • [论文阅读]ConfusedPilot: Confused Deputy Risks in RAG-based LLMs
  • 内蒙古已评出280名“担当作为好干部”,186人提拔或晋升
  • 什么是中国好手艺?材美、工巧、器韵、时宜
  • 上海开展数据产品知识产权登记存证试点,243个产品许可收益超20亿元
  • 最高法:抢票软件为用户提供不正当优势,构成不正当竞争
  • 【社论】地铁读书人也是一道城市风景
  • 又有多地推进产科整合