《最新出炉》系列入门篇-Python+Playwright自动化测试-51- 字符串操作 - 上篇
1.简介
在日常的自动化测试工作中进行断言的时候,我们可能经常遇到的场景。从一个字符串中找出一组数字或者其中的某些关键字,而不是将这一串字符串作为结果进行断言。这个时候就需要我们对字符串进行操作,宏哥这里介绍两种方法:正则和字符串切片函数split()。
2.测试场景
宏哥在这里说一下,自己的胡诌的测试场景哈,仅供学习和参考。然后按照宏哥说的进行自动化测试,测试场景:在度娘或者其他搜索引擎中搜索“北京宏哥”,然后搜索完毕,会返回搜索结果,告诉你搜索到多少个“北京宏哥”。宏哥这里分别用搜狗和必应搜索,然后对比她俩谁所搜到的“北京宏哥”多,然后通过对比说明谁的搜索能力强大(搜索结果多说明搜索能力强大)。
3.字符串切片操作
关于这个字符串切片的这个概念宏哥就在这里赘述一下或许不是很全面,有兴趣的也可以自己查一下。但是宏哥上边说的测试场景就需要用到这一操作。
在python中,我们定义好一个字符串,如下所示。
在python中定义个字符串然后把它赋值给一个变量。我们可以通过下标访问单个的字符,跟所有的语言一样,下标从0开始。这个时候呢,我们可以通过切片的方式来截取出我们定义的字符串的一部分。使用切片的时候我们有两种方式:
1.没有步长的简单切片
语法格式是这样的:
- 首先定义一格字符串,比如叫s,然后给它赋值
- 截取字符串中的一部分,我们用的语法是 s[ start : stop ]
注意一下: 在这里呢,start表示的是字符串要截取的开始下标,stop 表示终止的字符串结束的前一个位置。
从上面我们可以知道,如果从开头截取到某个特定的位置可以用 [ : a]来表示
如果从某一位开始截取到最后一位可以用[ a : ]来表示
这里有一点要说明, 在 pyhton中的字符串的索引序号可以是正数也可以是负数,从-1开始算:
所以我们还可以这么玩:
2.有步长的切片方式
另外的一种切片方式就是,首先还是定义一格字符串的变量,然后间隔的取出我们的字符串中的字符。
语法格式:
同样这里取出来的字符串的结束字符是stop结束的前一个字符
stride表示的是间隔的取出字符串
下面来看几个例子:
这个时候我们可以还可以反转字符串
间隔逆向的取出字符串:
反方向的截取部分的字符串:
这个时候我们将步长的那个地方设置为负数,表示从右向左取字符串,步长的绝对值大于1表示间隔的取数。
开始的部分那个截取下标也要从负数计算,或者start必须大于结束的下标,因为它是从右开始的截取的。
python的字符串切片就是这个样子的。好了就介绍这么多差不多够用了。
4.项目实战
4.1测试用例
首先宏哥根据测试场景进行测试用例的设计,如下:
1.分别在搜狗和必应搜索框“北京宏哥”
2.分别点击查询,观察查询结果
3.分别将查询结果取到
4.提取结果中的数字,保存在变量中
5.对比两个数字的大小
4.2代码设计
4.3参考代码
# coding=utf-8 # 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行 # 2.注释:包括记录创建时间,创建人,项目名称。
'''
Created on 2024-04-04
@author: 北京-宏哥
公众号:北京宏哥(微信搜索:北京宏哥,关注宏哥,提前解锁更多测试干货)
Project: 《最新出炉》系列入门篇-Python+Playwright自动化测试-51- 字符串操作 - 上篇
'''
# 3.导入模块 from playwright.sync_api import Playwright, sync_playwright, expect
def run(playwright: Playwright) -> None:
browser = playwright.chromium.launch(headless=False)
context = browser.new_context()
page = context.new_page()
page.goto("https://www.sogou.com")
page.locator("#query").fill("北京宏哥")
page.locator("#stb").click()
page.wait_for_timeout(1000)
# 定位 搜狗为您找到相关结果约xxxx个 这个元素
result = page.locator("//*[@id='main']/div[1]/p")
# 获取该字段值 "搜索工具 搜狗为您找到相关结果约xxxxx个"
result_string = result.inner_text()
print(result_string)
# 根据约这个词切片,取第二片字符串,应该得到“xxxx个”
st1 = result_string.split("约")[1]
print(st1)
# 再切一次,去除条,得到我们想要的数字结果数
search_number = st1.split("条")[0]
# 去掉字符串中的逗号,方便转换成int
search_number1 = search_number.replace(",", "")
print(search_number1) page.goto("https://cn.bing.com")
page.locator("#sb_form_q").fill("北京宏哥")
page.locator("#search_icon").click()
page.wait_for_timeout(1000)
# 定位 必应为xxxx条结果 这个元素
result1 = page.locator("//*[@id='b_tween_searchResults']/span")
# 获取该字段值 "约 xxx 个结果"
result_string1 = result1.inner_text()
print(result_string1)
st2 = result_string1.split("约")[1]
print(st2)
# 再切一次,去除个,得到我们想要的数字结果,根据个这个词切片,取第一片字符串,应该得到“273,000 ”
st2 = st2.split("个")[0]
# 去掉字符串中的逗号和空格,方便转换成int
st3 = st2.strip().replace(",", "")
print(st3)
# 首先将两个数都转换为int 数据
a_N = int(search_number1)
b_N = int(st3)
# 搜狗和必应的搜索结果对比
if (a_N > b_N):
print("搜狗牛逼,搜狗威武!!!")
else:
print("必应牛逼,必应威武!!!");
page.wait_for_timeout(20000)
page.close()
context.close()
browser.close()
with sync_playwright() as playwright:
run(playwright)
4.4运行代码
1.运行代码,右键Run'Test',就可以看到控制台输出,如下图所示:
2.运行代码后电脑端的浏览器的动作。如下图所示:
5.小结
1.注意切片取到字符串数字中,带有逗号,转成成int的数字会报错,因此需要将逗号去掉,但是必应的逗号去掉后,数字中带有空格,转换成int的数字也会报错,因此也需要去掉。
2.宏哥这里去掉逗号比较简单,但是如果字符串中带有的逗号多了,这种方法不适用,你需要自己写一个方法,进行替换。
好了,时间不早了,今天就分享和讲解到这里。
《最新出炉》系列入门篇-Python+Playwright自动化测试-51- 字符串操作 - 上篇的更多相关文章
- Spring实践系列-入门篇(一)
本文主要介绍了在本地搭建并运行一个Spring应用,演示了Spring依赖注入的特性 1 环境搭建 1.1 Maven依赖 目前只用到依赖注入的功能,故以下三个包已满足使用. <properti ...
- Google C++测试框架系列入门篇:第三章 基本概念
上一篇:Google C++测试框架系列入门篇:第二章 开始一个新项目 原始链接:Basic Concepts 词汇表 版本号:v_0.1 基本概念 使用GTest你肯定会接触到断言这个概念.断言是用 ...
- Google C++测试框架系列入门篇:第二章 开始一个新项目
上一篇:Google C++测试框架系列入门篇:第一章 介绍:为什么使用GTest? 原始链接:Setting up a New Test Project 词汇表 版本号:v_0.1 开始一个新项目 ...
- 《手把手教你》系列技巧篇(五十)-java+ selenium自动化测试-字符串操作-上篇(详解教程)
1.简介 自动化测试中进行断言的时候,我们可能经常遇到的场景.从一个字符串中找出一组数字或者其中的某些关键字,而不是将这一串字符串作为结果进行断言.这个时候就需要我们对字符串进行操作,宏哥这里介绍两种 ...
- 深入浅出ASP.NET Core系列(入门篇)
入门篇 1.1.专题介绍 1.2.环境安装 1.3.创建项目 1.4部署到IIS 1.5准备CentOS和Nginx环境 1.6部署到CentOS 2.1命令行和JSON的配置 2.2Bind建立配置 ...
- 零基础入门学习Python(14)--字符串:各种奇葩的内置方法
前言 这节课我们回过头来,再谈一下字符串,或许我们现在再来谈字符串,有些朋友可能觉得没必要了,甚至有些朋友就会觉得,不就是字符串吗,哥闭着眼也能写出来,那其实关于字符串还有很多你不知道的秘密哦.由于字 ...
- python学习笔记(字符串操作、字典操作、三级菜单实例)
字符串操作 name = "alex" print(name.capitalize()) #首字母大写 name = "my name is alex" pri ...
- Python学习杂记_3_字符串操作的常用方法
字符串操作 字符串是可以通过下标来进行取值的,但是由于字符串是不可变变量,不能通过下标来修改它的值(形式如 字符串[下标]),下标从0开始,最大下标值是字符串长度减1,即len(string)-1 P ...
- 0x00-Kali Linux 系列入门篇
Kali Linux介绍篇 Kali Linux 官网:https://www.kali.org/ Kali Linux 前身是著名渗透测试系统BackTrack ,是一个基于 Debian 的 Li ...
- Node.js 从入门到茫然系列——入门篇
在创建服务的时候,我们一般代码就是: var http = require("http"); var server = http.createServer(function(req ...
随机推荐
- iOS 端容器之 WKWebView 那些事
简介: 本文主要是关于在端容器设计开发过程中,WKWebView 使用上遇到的一些问题和解决办法 作者 | 驽良 来源 | 阿里技术公众号 一 背景 熟悉 iOS\macOS Hybrid 混合 ...
- dotnet 提升 ToUpper 性能
在应用软件启动过程中,客户端应用软件是对性能敏感的.比如在解析命令行参数的时候,有时候需要进行字符串处理逻辑.一般来说命令行参数都是语言文化无关的,在需要进行全大写或全小写转换过程中,采用 ToUpp ...
- nginx部署使用history模式的vue项目详细配置【可多级目录】
介绍 本文是篇详细的介绍vue项目在history模式下发布时build,项目如何配置,nginx如何配置,才能正常的使用历史模式.或者在二级目录下,多级路径下也能正常使用历史模式. 本文的例子中假设 ...
- 一个开源轻量级的C#代码格式化工具(支持VS和VS Code)
前言 C#代码格式化工具除了ReSharper和CodeMaid,还有一款由.NET开源.免费(MIT License).轻量级的C#语言代码格式化工具:CSharpier. 工具介绍 CSharpi ...
- 函数编程:强大的 Stream API
函数编程:强大的 Stream API 每博一文案 只要有人的地方,世界就不会是冰冷的,我们可以平凡,但绝对不可以平庸. ------ <平凡的世界> 人活着,就得随时准备经受磨难.他已经 ...
- M3U8下载器加嗅探浏览器
M3U8下载器太多了,随便一抓一大把,没什么新奇的. 下载地址: https://www.zhaimaojun.cn/P/%e8%a7%86%e9%a2%91%e7%bd%91%e7%ab%99%e5 ...
- 带你十天轻松搞定 Go 微服务系列全集+勘误
官网手册: https://go-zero.dev/cn/ 文档说明: https://zhuanlan.zhihu.com/p/461604538 本地开发运行环境: https://github. ...
- ubuntu下安装php pdo扩展和导入数据库
默认安装的php不存在pdo扩展,因此在使用到的时候会报错,直接使用这个命令 apt-get install php-mysql 就可以成功安装pdo扩展 安装完数据库后需要导入sql语句,先进入数据 ...
- Typora最后的免费版本0.11.18
Typora最后的免费版本为0.11.18. 之后的1.x开始收费. 免费版本0.11.18的百度网盘链接如下(永久链接): 链接:https://pan.baidu.com/s/1XizAD0SFp ...
- nim 2. 变量与函数
对于系统的学习,官网上的相应的资料, 这里通过一个简单的例程,演示一下. 这个例程里有一个根据半径计算圆面积的方法,以及调用的示例: 演示代码 1 #计算圆的面积 2 proc calcArea(r: ...