Selenium + Python 自动化测试08(截图)

ops/2024/10/11 9:28:47/

        我们的目标是:按照这一套资料学习下来,大家可以独立完成自动化测试的任务。

上一篇我们讨论了滑块的操作方法,本篇文章我们讲述一下截图的操作方法。希望能够帮到爱学的小伙伴。

         在实际的测试项目组中我们经常要截屏保存报错信息,以便后续人工确认是否是真的bug。和对应的日志相对应。有时登录或者注册有图片上的验证码需要验证,也需要截图验证码,然后分析识别图片上的文字。

1、截屏的方法

页面截屏比较简单,可以使用selenium自带的方法:save_screenshot

下面以免费Swag Labs的网址(https://www.saucedemo.com/)为例进行说明:

练习代码如下:

#打开浏览器,并最大化driver.get("https://www.saucedemo.com/")   #打开练手的网站driver.maximize_window()time.sleep(3)now = time.strftime("%Y-%m-%d %H_%M_%S")pictures=now+".png"driver.save_screenshot(pictures)

运行脚本以后可以看到产生对应的图片,在这个项目的文件夹下。

图片为了不重复命名,这里用了日期+时间的方法。

2、元素的截图

验证码如果要用图像识别的方式去处理的话,需要先对验证码元素进行截图。

如下例子:

前面是上一节滑块的内容,黄色是这次新增:

driver.get("https://passport.ctrip.com/user/reg/home")driver.maximize_window()time.sleep(3)# 点击同意并继续driver.find_element_by_xpath("//*[@id='agr_pop']/div[3]/a[2]").click()# 滑块的元素slider = driver.find_element_by_css_selector("#slideCode > div.cpt-drop-box > div.cpt-drop-btn")print(slider.size['width'])print(slider.size['height'])# 滑块区域的元素slide_range = driver.find_element_by_css_selector("#slideCode > div.cpt-drop-box > div.cpt-bg-bar")print(slide_range.size['width'])print(slide_range.size['height'])# 拖动滑块ActionChains(driver).drag_and_drop_by_offset(slider, slide_range.size['width'], -slider.size['height']).perform()print("滑动成功")time.sleep(3)now = time.strftime("%Y-%m-%d %H_%M_%S")pictures = now + ".png"
driver.save_screenshot(pictures)# 元素的位置captcha_image = driver.find_element_by_class_name("cpt-small-img")# 获取元素的位置和大小left = captcha_image.location['x']top = captcha_image.location['y']right = left +captcha_image.size["width"]bottom =top+captcha_image.size["width"]# 截取屏幕截图im = Image.open(pictures)im = im.crop((left,top,right,bottom))im.save("captcha.png")

运行脚本查看文件夹下有对应的截图:        

好了,今天就分享到这里。

每天进步一点点,加油!


http://www.ppmy.cn/ops/93063.html

相关文章

免费【2024】springboot 甘肃旅游工艺品商城的设计与实现

博主介绍:✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术范围:SpringBoot、Vue、SSM、HTML、Jsp、PHP、Nodejs、Python、爬虫、数据可视化…

8.8 哈希表简单 1 Two Sum 141 Linked List Cycle

1 Two Sum class Solution { public:vector<int> twoSum(vector<int>& nums, int target) {//给的target是目标sum 要返回vector<int> res(2,0);是在num中找加数//首先假设每个输入都是由唯一的结果&#xff0c;而且不适用相同的元素两次一共有n*(n-1)种…

1.mysql-DDL-数据库操作

DDL-数据库操作定义语言 DML-数据库操作语言 DCL-数据库控制语言 DQL-数据库查询语言 DDL-数据库操作 DDL-数据库操作- 查询 查询所有数据 SHOW DATABASES;查询当前数据库 SELECT DATABASE();DDL-数据库操作- 创建 CREATE DATABSE [IF NOT EXISTS] 数据库名 [ DEFAULT CHA…

c++_游戏_狼人杀

思路主要包括以下几个部分&#xff1a; 角色分配&#xff1a;代码中通过随机数的方式给狼人、平民、预言家和法师等角色进行分配&#xff0c;保证每个角色的数量和身份的随机性。 游戏进行&#xff1a;根据狼人、平民、预言家和法师等角色的身份&#xff0c;游戏进行了夜晚和白…

CSS的重绘和重排是什么?

你好同学&#xff0c;我是沐爸&#xff0c;欢迎点赞、收藏和关注。个人知乎 在CSS中&#xff0c;元素的某些属性的变化会触发浏览器的重绘&#xff08;Repaint&#xff09;或重排&#xff08;Reflow&#xff0c;也称为重渲染或回流&#xff09;。了解这些差异可以帮助开发同学优…

AI 手机的技术展望

某某领导问到我&#xff0c;AI手机这个产业发展如何&#xff1f;对于&#xff0c;地方科技园区&#xff0c;应该如何发展相关产业&#xff1f;我一时还真说不上来&#xff0c;于是&#xff0c;查了一下资料&#xff0c;大概应对了一下。 一&#xff1a;AI手机的定义 首先&…

Android顶部标题栏自定义,添加按钮

1. 先写一个标题栏的layout, 放在工程的res/layout下&#xff0c;如下: <?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_par…

windows和office微软官方免费激活教程

微软提供了windows系统和office的官方免费激活&#xff0c;其实不用去买什么激活码&#xff0c;官方提供了激活方式&#xff0c;完全免费。目前测试没发现什么问题&#xff0c;windows还支持永久激活&#xff0c;比一些乱七八糟的kms激活工具还省心。 github地址&#xff1a;Gi…