当前位置: 首页 > 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);

http://www.xdnf.cn/news/74647.html

相关文章:

  • 【论文阅读24】并行 TCN-LSTM(2024-02)
  • 数据仓库ODS、DWD、DWS、ADS各层介绍
  • 【Linux】多进程任务模块
  • Arthas 指南
  • 在windows下安装windows+Ubuntu16.04双系统(下)
  • Java--数组的应用
  • 【Linux网络】应用层自定义协议与序列化
  • 怎么发布、更新Python第三方库?以potx-cloud为例
  • 算法学习(二)
  • PID控制程序编写
  • 20242817李臻《Linux⾼级编程实践》第8周
  • 辛格迪客户案例 | 浙江高跖医药委托生产质量管理协同(OWL MAH)项目
  • 2025-0421学习记录16——文献阅读与分享(1)
  • 判断链表是否为环(Java版本自己用)
  • 【技术追踪】Differential Transformer(ICLR-2025)
  • VMware制作Windows虚拟机模板注意点
  • 市场分析 3 mysql (槽)
  • vue部署到nginx服务器 启用gzip
  • 4月22日直播预告|AI赋能开发提效,三大应用场景实战分享
  • JavaScript实现二级菜单
  • 代码随想录第21天: 回溯算法3
  • Linux随记(十七)
  • SpringBoot入门实战(第二篇:MySQL集成配置)
  • 基于框架表示的不确定性推理
  • Web前端:Overflow属性(超出裁剪属性)
  • Emacs入门篇2:安装evil插件以便vi老用户可以使用VI快捷键来快速使用Emacs
  • 共建智能体时代 | 华宇亮相超聚变探索者大会2025
  • 为什么Makefile中的clean需要.PHONY
  • navicat 远程云服务器的mysql问题
  • linux上Flexlm命令