《手把手教你》系列技巧篇(五十)-java+ selenium自动化测试-字符串操作-上篇(详解教程)
1.简介
自动化测试中进行断言的时候,我们可能经常遇到的场景。从一个字符串中找出一组数字或者其中的某些关键字,而不是将这一串字符串作为结果进行断言。这个时候就需要我们对字符串进行操作,宏哥这里介绍两种方法:正则和字符串切片函数split()。
2.测试场景
宏哥在这里说一下,自己的胡诌的测试场景哈,然后按照宏哥说的进行自动化测试,测试场景:在度娘或者其他搜索引擎中搜索“北京宏哥”,然后搜索完毕,会返回搜索结果,告诉你搜索到多少个“北京宏哥”。宏哥这里分别用度娘和必应搜索,然后对比她俩谁所搜到的“北京宏哥”多,然后通过对比说明谁的搜索能力强大。
3.字符串切片操作
关于这个字符串切片的这个概念宏哥就不在这里赘述了,有兴趣的可以自己查一下。但是宏哥上边说的测试场景就需要用到这一操作。
3.1测试用例
首先宏哥根据测试场景进行测试用例的设计,如下:
1.分别在度娘和必应搜索框“北京宏哥”
2.分别点击查询,观察查询结果
3.分别将查询结果取到
4.提取结果中的数字,保存在变量中
5.对比两个数字的大小
3.2代码设计
宏哥根据测试用例进行自动化脚本的设计,如下:
3.3参考代码
package lessons; import java.util.concurrent.TimeUnit; import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver; /**
* @author 北京-宏哥
*
* @公众号:北京宏哥
*
* 《手把手教你》系列技巧篇(五十)-java+ selenium自动化测试-字符串操作-上篇(详解教程)
*
* 2021年11月30日
*/
public class StringOperation { public static void main(String[] args) throws InterruptedException { System.setProperty("webdriver.chrome.driver", ".\\Tools\\chromedriver.exe"); WebDriver driver = new ChromeDriver(); driver.get("https://www.baidu.com");
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(2, TimeUnit.SECONDS); driver.findElement(By.id("kw")).sendKeys("北京宏哥");
driver.findElement(By.id("su")).click(); Thread.sleep(1000); //定位 百度为您找到相关结果约xxxx个 这个元素
WebElement result = driver.findElement(By.xpath("//*[@id='tsn_inner']/div[2]/span")); //获取该字段值 "搜索工具 百度为您找到相关结果约xxxxx个"
String result_string = result.getText();
//根据约这个词切片,取第二片字符串,应该得到“xxxx个”
String st1 = result_string.split("约")[1];
//System.out.println(st1); //再切一次,去除个,得到我们想要的数字结果数
String search_number = st1.split("个")[0];
//去掉字符串中的逗号,方便转换成int
String search_number1= search_number.replace(",","");
System.out.println(search_number1); driver.get("https://cn.bing.com/");
driver.manage().timeouts().implicitlyWait(2, TimeUnit.SECONDS); driver.findElement(By.id("sb_form_q")).sendKeys("北京宏哥");
driver.findElement(By.id("search_icon")).click(); Thread.sleep(1000); //定位 必应为xxxx条结果 这个元素
WebElement result1 = driver.findElement(By.xpath("//*[@id='b_tween']/span[1]")); // 获取该字段值 "搜索工具 必应为xxxx条结果"
String result_string1 = result1.getText();
// 根据条这个词切片,取第一片字符串,应该得到“16200 ”
String st2 = result_string1.split("条")[0];
////去掉字符串中的逗号和空格,方便转换成int
String st3= st2.trim().replaceAll(",","");
System.out.println(st3); // 首先将两个数都转换为int 数据
int a_N = Integer.valueOf(search_number1);
int b_N = Integer.valueOf(st3);
//进行搜索结果对比
if(a_N>b_N){
System.out.println("度娘牛逼,度娘威武!!!");
}else{
System.out.println("必应牛逼,必应威武!!!");
} driver.quit(); } }
3.4运行代码
1.运行代码,右键Run AS->Java Appliance,控制台输出,如下图所示:
2.运行代码后电脑端的浏览器的动作,如下小视频所示:
4.小结
1.注意切片取到字符串数字中,带有逗号,转成成int的数字会报错,因此需要将逗号去掉,但是必应的逗号去掉后,数字中带有空格,转换成int的数字也会报错,因此也需要去掉。
2.宏哥这里去掉逗号比较简单,但是如果字符串中带有的逗号多了,这种方法不适用,你需要自己写一个方法,进行替换。
5.拓展
5.1java字符串截取的几种方法
主要有以下几种方法:
1、通过subString()方法来进行字符串截取(最常用)
2、通过StringUtils提供的方法
3、split()+正则表达式来进行截取
5.1.1先来介绍最常用的一种
1、通过subString()方法来进行字符串截取,返回字符串中的子字符串,在java中有两种用法
第一种,传递一个参数:
//该子字符串从指定索引处的字符开始,直到此字符串末尾。
public String substring(int beginIndex)
第二种,传递两个参数:
//从指定的 beginIndex 处开始,直到索引 endIndex - 1 处的字符。因此,该子字符串的长度为 endIndex-beginIndex。
public String substring(int beginIndex, int endIndex)
//参数说明:beginIndex -- 起始索引(包括)、endIndex -- 结束索引(不包括)。
示例代码:
package lessons; /**
* @author 北京-宏哥
*
* @公众号:北京宏哥
*
* 《手把手教你》系列技巧篇(五十)-java+ selenium自动化测试-字符串操作-下篇(详解教程)
*
* 2021年12月01日
*/
public class Test1 { public static void main(String[] args) {
String Str = new String("hello 北京宏哥");
System.out.print("返回值,从第4位截取到字符串末尾 :" );
System.out.println(Str.substring(4) ); System.out.print("返回值,从第4位截取到第10位 :" );
System.out.println(Str.substring(4, 10) );
} }
运行结果:
5.1.2通过StringUtils提供的方法
示例代码:
//与第一种方法效果一样
StringUtils.substring("hello 北京宏哥", 4); // 返回值,从第4位截取到字符串末尾 : o 北京宏哥
StringUtils.substring("hello 北京宏哥", 4, 10); // 返回值,从第4位截取到第10位 : o 北京宏 //截取某个字符串之前的字符
StringUtils.substringBefore("hello 北京宏哥", "l");
//结果是:he 这里是以第一个”l”,为标准。
StringUtils.substringBeforeLast("hello 北京宏哥", "l");
//结果为:hel 这里以最后一个“l”为准。 //截取某个字符串之后的字符
StringUtils.substringAfter("hello 北京宏哥", "l");
//结果是:lo 北京宏哥 这里是以第一个”l”,为标准。
StringUtils.substringAfterLast("hello 北京宏哥", "l");
//结果为:o 北京宏哥 这里以最后一个“l”为准。 //截取两个字符串之间隔的字符
StringUtils.substringBetween("hello 北京o宏哥", "o");
//结果是: 北京 两个o之间的字符串。
StringUtils.substringBetween("hello 北京r宏哥", "l", "r");
//结果是: lo 北京 第一个字符“l”与第一个字符“r”之间的字符串
StringUtils.substringsBetween("hello 北京r宏哥", "l", "r");
//结果是:数组 [lo 北京] 第一个字符“l”与第一个字符“r”之间的字符串,以数组形式返回。
运行结果:
5.1.3split()+正则表达式来进行截取
将字符串按照分割符截取,以数组形式返回
示例代码:
/**
* @author 北京-宏哥
*
* @公众号:北京宏哥
*
* 《手把手教你》系列技巧篇(五十)-java+ selenium自动化测试-字符串操作-下篇(详解教程)
*
* 2021年12月01日
*/
public class test{ public static void main(String[] args) {
String str = "hello, 北京宏哥, 北京宏, 北京, 北";
String[] strs=str.split(",");
for(int i=0,len=strs.length;i<len;i++){
System.out.println(strs[i].toString());
}
} }
运行结果:
《手把手教你》系列技巧篇(五十)-java+ selenium自动化测试-字符串操作-上篇(详解教程)的更多相关文章
- 《手把手教你》系列技巧篇(五十六)-java+ selenium自动化测试-下载文件-上篇(详细教程)
1.简介 前边几篇文章讲解完如何上传文件,既然有上传,那么就可能会有下载文件.因此宏哥就接着讲解和分享一下:自动化测试下载文件.可能有的小伙伴或者童鞋们会觉得这不是很简单吗,还用你介绍和讲解啊,不说就 ...
- 《手把手教你》系列技巧篇(五十九)-java+ selenium自动化测试 - 截图三剑客 -上篇(详细教程)
1.简介 今天本来是要介绍远程测试的相关内容的,但是宏哥在操作服务器的时候干了件糊涂的事,事情经过是这样的:本来申请好的Windows服务器用来做演示的,可是服务器可能是局域网的,连百度都不能访问,宏 ...
- 《手把手教你》系列技巧篇(五十一)-java+ selenium自动化测试-字符串操作-下篇(详解教程)
1.简介 自动化测试中进行断言的时候,我们可能经常遇到的场景.从一个字符串中找出一组数字或者其中的某些关键字,而不是将这一串字符串作为结果进行断言.这个时候就需要我们对字符串进行操作,宏哥这里介绍两种 ...
- 《手把手教你》系列技巧篇(四十一)-java+ selenium自动化测试 - 处理iframe -上篇(详解教程)
1.简介 原估计宏哥这里就不对iframe这个知识点做介绍和讲解了,因为前边的窗口切换就为这种网页处理提供了思路,另一个原因就是虽然iframe很强大,但是现在很少有网站用它了.但是还是有小伙伴或者童 ...
- 《手把手教你》系列技巧篇(五十七)-java+ selenium自动化测试-下载文件-下篇(详细教程)
1.简介 前边几篇文章讲解完如何上传文件,既然有上传,那么就可能会有下载文件.因此宏哥就接着讲解和分享一下:自动化测试下载文件.可能有的小伙伴或者童鞋们会觉得这不是很简单吗,还用你介绍和讲解啊,不说就 ...
- 《手把手教你》系列技巧篇(二十五)-java+ selenium自动化测试-FluentWait(详细教程)
1.简介 其实今天介绍也讲解的也是一种等待的方法,有些童鞋或者小伙伴们会问宏哥,这也是一种等待方法,为什么不在上一篇文章中竹筒倒豆子一股脑的全部说完,反而又在这里单独写了一篇.那是因为这个比较重要,所 ...
- 《手把手教你》系列技巧篇(三十五)-java+ selenium自动化测试-单选和多选按钮操作-下篇(详解教程)
1.简介 今天这一篇宏哥主要是讲解一下,如何使用list容器来遍历多选按钮.大致两部分内容:一部分是宏哥在本地弄的一个小demo,另一部分,宏哥是利用JQueryUI网站里的多选按钮进行实战. 2.d ...
- 《手把手教你》系列技巧篇(四十五)-java+ selenium自动化测试-web页面定位toast-上篇(详解教程)
1.简介 在使用appium写app自动化的时候介绍toast的相关元素的定位,在Web UI测试过程中,也经常遇到一些toast,那么这个toast我们这边如何进行测试呢?今天宏哥就分两篇介绍一下. ...
- 《手把手教你》系列技巧篇(五十二)-java+ selenium自动化测试-处理面包屑(详细教程)
1.简介 面包屑(Breadcrumb),又称面包屑导航(BreadcrumbNavigation)这个概念来自童话故事"汉赛尔和格莱特",当汉赛尔和格莱特穿过森林时,不小心迷路了 ...
随机推荐
- VS2013中using System.Windows.Forms;引用不成功
命名空间"System"中不存在类型或命名空间名称"Windows" 项目右侧--解决资源管理器---引用---右键--添加引用---在.NET下拉框找---找 ...
- 【NetWork】-- 网络原理
2019-07-18 21:00:25 by冲冲 1. 网络拓扑 把网络中的计算机和通信设备抽象为一个点,把传输介质抽象为一条线,由点和线组成的几何图形就是计算机网络的拓扑结构(Network T ...
- Insights直播回顾,对话专家,HMS Core 6创新能力解读
HMS Core Insights第八期直播–对话专家,HMS Core 6创新能力解读,已于11月25日圆满结束,本期直播与小伙伴们一同了解了HMS Core 6在图形.媒体以及连接与通信领域推出的 ...
- freeswitch APR库哈希表
概述 freeswitch的核心源代码是基于apr库开发的,在不同的系统上有很好的移植性. 哈希表在开发中应用的非常广泛,主要场景是对查询效率要求较高的逻辑,是典型的空间换时间的数据结构实现. 大多数 ...
- WebGoat8.2.2-A8不安全的反序列化
1.概念 使用反序列化在各编程语言中略有不同,如Java.PHP.Python.Ruby.C/C++,但在关键概念上是一样的 序列化:将(内存中的)对象转化成数据格式,以便存储或传输 ...
- Sentry 监控 - Snuba 数据中台本地开发环境配置实战
系列 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创建版本 快速使用 Docker 上手 Sentry-CLI - 30 秒上手 Source Maps Sentry For ...
- [APIO2020]有趣的旅途
注意到第一个点是可以钦定的. 那么我们考虑在重心的子树里反复横跳. 每次选择不同子树里的深度最大的点. 在同一颗子树里可能会在lca处出现问题. 那么我们选择重心,要考虑到会不会出现一颗子树不够选的操 ...
- Codeforces 446D - DZY Loves Games(高斯消元+期望 DP+矩阵快速幂)
Codeforces 题目传送门 & 洛谷题目传送门 神仙题,%%% 首先考虑所有格子都是陷阱格的情况,那显然就是一个矩阵快速幂,具体来说,设 \(f_{i,j}\) 表示走了 \(i\) 步 ...
- linux下vim的安装与配置(centos)
1.vim的安装 #yum search vim //查看vim相关软件信息 #yum install -y vim* //在线安装vim 2.vim的配置 (1)~/.viminfo 在vim ...
- 宏GENERATED_BODY做了什么?
Version:4.26.2 UE4 C++工程名:MyProject \ 一般语境下,我们说c++源码的编译大体分为:预处理.编译.链接; cppreference-translation_phas ...