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

测试开发话题09---自动化测试常用函数(1)

 🔥个人主页:寻星探路

🎬作者简介:Java研发方向学习者

📖个人专栏: 、《《测试开发漫谈》《JavaEE 初阶启程记》

⭐️人生格言:没有人生来就会编程,但我生来倔强!!!



目录

一、元素的定位

1、cssSelector

2、xpath

二、操作测试对象

三、窗口

1、切换窗口

2、窗口设置大小

3、屏幕截图

4、关闭窗口


一、元素的定位

web自动化测试的操作核心是能够找到页面对应的元素,然后才能对元素进行具体的操作。

常见的元素定位方式非常多,如id,classname,tagname,xpath,cssSelector

常用的主要由cssSelector和xpath

1、cssSelector

选择器的功能:选中页面中指定的标签元素

        选择器的种类分为基础选择器和复合选择器,常见的元素定位方式可以通过id选择器和子类选择器来进行定位。

        定位百度首页的“百度热搜”元素,可以使用通过id选择器和子类选择器进行定位:#s-hotsearch- wrapper >div

“搜索输入框元素”:#kw

“百度一下按钮”:#su

2、xpath

XML路径语言,不仅可以在XML文件中查找信息,还可以在HTML中选取节点。

xpath使用路径表达式来选择xml文档中的节点

xpath语法中:

1)获取HTML页面所有的节点: //*

2)获取HTML页面指定的节点://[ 指定节点 ]

//ul :获取HTML页面所有的ul节点

//input:获取HTML页面所有的input节点

3)获取一个节点中的直接子节点:/

//span/input

4)获取一个节点的父节点:..

//input/.. 获取input节点的父节点

5)实现节点属性的匹配:[@...]

//*[@id='kw']  匹配HTML页面中id属性为kw的节点

6)使用指定索引的方式获取对应的节点内容

#注:xpath的索引是从1开始的。

百度首页通过://div/ul/li[3] 定位到第三个百度热搜标签

更便捷的生成 selector/xpath 的方式:右键选择复制 "Copy selector/xpath"

#注:元素的定位方法必须唯一。

案例:如果想要匹配到百度首页指定的新闻文本或者节点集:,直接使用 #hotsearch-content-wrapper > li 能够满足吗?

问题:既然可以手动复制 selector/xpath 的方式 ,为什么还有了解语法?

        手动复制的selector/xpath表达式并不一定满足上面的唯一性的要求,有时候也需要手动的进行修改表达式

案例:百度首页(需要登陆百度账号)右侧的热搜,复制li标签下的a标签,复制好的的selector为: #title-content ,xpath为: //*[@id="title-content"] ,大家可以手动操作一下, 手动复制的表达式是否唯一呢?

二、操作测试对象

        获取到了页面的元素之后,接下来就是要对元素进行操作了。常见的操作有点击、提交、输入、清除、获取文本。

1、点击/提交对象:click()

 //找到百度⼀下按钮并点击 driver.findElement(By.cssSelector("#su")).click();

2、模拟按键输入:sendKeys("")

driver.findElement(By.cssSelector("#kw")).sendKeys("输⼊⽂字");

3、清除文本内容

输入文本后又想换一个新的关键词,这里就需要用到 clear()

 driver.findElement(By.cssSelector("#kw")).sendKeys("我爱游戏");driver.findElement(By.cssSelector("#kw")).clear();driver.findElement(By.cssSelector("#kw")).sendKeys("我爱学习");

4、获取文本信息

如果判断获取到的元素对应的文本是否符合预期呢?获取元素对应的文本并打印一下~~

获取文本信息: getText()

 String bdtext = driver.findElement(By.xpath("//*[@id="title-content"]/span[1]")).getText();System.out.println("打印的内容是:"+bdtext);

#注:文本和属性值不要混淆了。获取属性值需要使用方法 getAttribute (" 属性名称 ") ;

5、获取当前页面标题:getTitle()

6、获取当前页面URL:getCurrentUrl()

三、窗口

打开一个新的页面之后获取到的title和URL仍然还是前一个页面的?

        当我们手工测试的时候,我们可以通过眼睛来判断当前的窗口是什么,但对于程序来说它是不知道当前最新的窗口应该是哪一个。对于程序来说它怎么来识别每一个窗口呢?每个浏览器窗口都有一个唯一的属性句柄(handle)来表示,我们就可以通过句柄来切换。

1、切换窗口

1)获取当前页面句柄: driver.getWindowHandle();

2)获取所有页面句柄: driver.getWindowHandles()

3)切换当前句柄为最新页面:

 String curWindow = driver.getWindowHandle();Set<String> allWindow = driver.getWindowHandles();for( String w : allWindow){if(w!=curWindow){driver.switchTo().window(w);}}

#注:执行了driver.close()之前需要切换到未被关闭的窗口

2、窗口设置大小

1)窗口的大小设置

 //窗⼝最⼤化 driver.manage().window().maximize();//窗⼝最⼩化 driver.manage().window().minimize();//全屏窗⼝ driver.manage().window().fullscreen();//⼿动设置窗⼝⼤⼩ driver.manage().window().setSize(new Dimension(1024, 768));

3、屏幕截图

        我们的自动化脚本一般部署在机器上自动的去运行,如果出现了报错,我们是不知道的,可以通过抓拍来记录当时的错误场景

        屏幕截图方法需要额外导入包:

 <dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.6</version></dependency>
 File file = ((TakesScreenshot)webDriver).getScreenshotAs(OutputType.FILE);FileUtils.copyFile(file,new File(filename));

代码演示

 //简单版本 File srcfile = driver.getScreenshotAs(OutputType.FILE);FileUtils.copyFile(srcfile,new File("my.png"));//⾼阶版本List< String> times = getTime();//⽣成的⽂件夹路径./src/test/autotest-2022-08-01/goodsbroser-20220801-214130.png String filename ="./src/test/autotest"+times.get(0)+"/"+str+""+times.get(1)+".png";File srcfile = driver.getScreenshotAs(OutputType.FILE);//把屏幕截图放到指定的路径下FileUtils.copyFile(srcfile,new File(filename));

4、关闭窗口

driver.close();
#注:窗⼝关闭后driver要重新定义
http://www.dtcms.com/a/568836.html

相关文章:

  • Linux - Fail2ban搭配 firewallcmd-rich-rules 完整部署教程
  • 使用 nvm 安装 Node.js
  • Arbess零基础学习 - 使用Arbess+GitLab实现Node.js项目自动化构建/主机部署
  • Linux 虚拟化技术 KVM/ESXI/Docker
  • C006基于博途西门子1200PLC机械手分拣物料控制系统仿真
  • 网站建设ui设计dw怎么做别人可以看的网站
  • 毕业生就业网站开发项目禁用wordpress默认编辑器
  • 服务器数据恢复—raid5阵列硬盘离线搞崩溃,分区数据恢复案例来袭
  • 基于springboot的新闻资讯系统
  • H3C AC+AP本地转发二层组网
  • JavaEE 进阶第五期:Maven 之道,项目的依赖艺术与构建哲学
  • Linux:五种IO模型与非阻塞IO
  • unity hub在ubuntu 22.0.4上启动卡住
  • 自己做个网站需要什么网页设计尺寸用怎么量
  • 青建设厅官方网站申请域名后怎样建设网站
  • 安装Conda并配置PX4无人机仿真环境
  • 微信小程序全局配置分享功能
  • Spring Boot3零基础教程,StreamAPI 更多用法,笔记100
  • Unity UGC IDE实现深度解析(六):子图系统与模块化设计
  • 嵌入式Linux新手入门:北京迅为3568开发板驱动开发第二章helloworld 驱动实验
  • 动态背景网站邗江区做网站
  • Milvus:向现有Collections更改和添加字段(十一)
  • ESP32C3开发指南(基于IDF):console控制台命令行交互功能
  • harmonyos的鸿蒙的跳转页面的部署参数传递
  • Git 简介和基础使用
  • HarmonyOS Marquee组件深度解析:构建高性能滚动视觉效果
  • 网站建设绿茶科技zencart 网站建设
  • vscode arm交叉编译 中 cmakeTools 编译器设置
  • 全自动化立体仓库巷道堆垛机使用西门子1500PLC通过EtherCAT主站转Profinet实现与EtherCAT协议的伺服进行通讯方案案例
  • MAC M1系统用pyinstaller分别打包支持ARM系统的app和支持Inter系统的APP