《手把手教你》系列技巧篇(五十)-java+ selenium自动化测试-字符串操作-上篇(详解教程)

简介: 【5月更文挑战第14天】本文介绍了自动化测试中如何从字符串中提取特定信息,主要讲解了两种方法:正则表达式和字符串切片操作。文章提供了一个测试场景,即在搜索引擎中搜索“北京宏哥”并比较百度和必应的搜索结果数量。通过字符串切片函数`split()`,可以从搜索结果的描述中提取出数字。代码示例展示了如何使用Java实现这个功能,包括在百度和必应的搜索页面获取结果数量,并进行比较。文章最后还简单提到了其他字符串截取的方法,如`substring()`和`StringUtils`类中的方法。

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());

       }

   }


}

运行结果:





每天学习一点,今后必成大神-

往期推荐(由于跳转参数丢失了,所有建议选中要访问的右键,在新标签页中打开链接即可访问):


Appium自动化系列,耗时80天打造的从搭建环境到实际应用精品教程测试

Python接口自动化测试教程,熬夜87天整理出这一份上万字的超全学习指南

Python+Selenium自动化系列,通宵700天从无到有搭建一个自动化测试框架

Java+Selenium自动化系列,仿照Python趁热打铁呕心沥血317天搭建价值好几K的自动化测试框架

Jmeter工具从基础->进阶->高级,费时2年多整理出这一份全网超详细的入门到精通教程

Fiddler工具从基础->进阶->高级,费时100多天吐血整理出这一份全网超详细的入门到精通教程

Pycharm工具基础使用教程


相关文章
|
7天前
|
Web App开发 数据采集 JavaScript
CDP与Selenium相结合——玩转网页端自动化数据采集/爬取程序
本文介绍了Selenium、Chrome DevTools及Chrome DevTools Protocol (CDP) 的基本功能与应用。Selenium是一款开源自动化测试工具,适用于网页端应用程序测试和数据采集,具备跨平台特性。Chrome DevTools内置浏览器中,提供调试、分析Web应用程序的功能,包括元素、控制台、源代码和网络选项卡等。CDP是一套用于与Chromium内核浏览器通信的API,支持自动化测试和性能分析。文中还展示了Selenium与CDP结合使用的示例,如捕获网络请求数据和打印网页内容,并推荐了相关书籍和资源以供深入学习。
88 39
CDP与Selenium相结合——玩转网页端自动化数据采集/爬取程序
|
16天前
|
Web App开发 IDE JavaScript
Selenium IDE:Web自动化测试的得力助手
Selenium IDE:Web自动化测试的利器。作为开源工具,Selenium IDE支持录制与回放用户操作,适用于Chrome、Firefox等多浏览器,简化了测试流程,提升了效率,降低了自动化测试的门槛。它还支持导出多种编程语言的脚本,便于测试集成与复用。
70 19
Selenium IDE:Web自动化测试的得力助手
|
18天前
|
Web App开发 IDE 测试技术
Selenium:强大的 Web 自动化测试工具
Selenium 是一款强大的 Web 自动化测试工具,包括 Selenium IDE、WebDriver 和 Grid 三大组件,支持多种编程语言和跨平台操作。它能有效提高测试效率,解决跨浏览器兼容性问题,进行性能测试和数据驱动测试,尽管存在学习曲线较陡、不稳定等缺点,但其优势明显,是自动化测试领域的首选工具。
121 17
Selenium:强大的 Web 自动化测试工具
|
2月前
|
JavaScript 前端开发 测试技术
精通Selenium:从基础到高级的网页自动化测试策略
【10月更文挑战第6天】随着Web应用变得越来越复杂,手动进行功能和兼容性测试变得既耗时又容易出错。自动化测试因此成为了现代软件开发不可或缺的一部分。Selenium是一个强大的工具集,它支持多种编程语言(包括Python),允许开发者编写脚本来模拟用户与Web页面的交互。本文将带领读者从Selenium的基础知识出发,逐步深入到高级的应用场景,通过丰富的代码示例来展示如何高效地进行网页自动化测试。
549 5
|
2月前
|
数据采集 Web App开发 数据可视化
Python爬虫教程:Selenium可视化爬虫的快速入门
Python爬虫教程:Selenium可视化爬虫的快速入门
|
1月前
|
Web App开发 设计模式 JavaScript
自动化测试之美:如何利用Selenium实现Web应用的高效测试
【10月更文挑战第29天】在软件开发的世界中,测试是确保产品质量的关键步骤。本文将带你了解如何使用Selenium这一强大的自动化测试工具,提高Web应用测试的效率和准确性。通过实际案例,我们将探索Selenium的核心功能及其在现代软件开发中的应用,旨在帮助读者掌握自动化测试的精髓,从而提升软件测试工作的整体效能。
52 0
|
2月前
|
测试技术 数据安全/隐私保护 开发者
自动化测试的奥秘:如何用Selenium和Python提升软件质量
【9月更文挑战第35天】在软件开发的海洋中,自动化测试是那艘能引领我们穿越波涛的帆船。本文将揭开自动化测试的神秘面纱,以Selenium和Python为工具,展示如何构建一个简单而强大的自动化测试框架。我们将从基础出发,逐步深入到高级应用,让读者能够理解并实现自动化测试脚本,从而提升软件的质量与可靠性。
|
3月前
|
Web App开发 JavaScript Java
自动化测试的利剑:Selenium WebDriver入门与实践
【9月更文挑战第21天】在软件开发的海洋中,自动化测试犹如一艘船,帮助开发者们快速航行至质量保证的彼岸。本文将作为你的罗盘,指引你了解和掌握Selenium WebDriver这一强大的自动化测试工具。通过深入浅出的方式,我们将探索Selenium WebDriver的基本概念、安装过程以及编写简单测试脚本的方法。无论你是刚接触自动化测试的新手,还是希望提升测试技能的开发者,这篇文章都将为你提供有价值的指导。
|
2月前
|
Web App开发 Java 测试技术
一、自动化:web自动化。Selenium 入门指南:从安装到实践
一、自动化:web自动化。Selenium 入门指南:从安装到实践
57 0
|
9天前
|
监控 JavaScript 测试技术
postman接口测试工具详解
Postman是一个功能强大且易于使用的API测试工具。通过详细的介绍和实际示例,本文展示了Postman在API测试中的各种应用。无论是简单的请求发送,还是复杂的自动化测试和持续集成,Postman都提供了丰富的功能来满足用户的需求。希望本文能帮助您更好地理解和使用Postman,提高API测试的效率和质量。
51 11