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

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

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

在实际的测试项目组中我们经常要截屏保存报错信息,以便后续人工确认是否是真的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")

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

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

每天进步一点点,加油!

相关推荐
为啥我就不胖呢4 分钟前
selenium获取登录token
爬虫·selenium
十二测试录2 小时前
【自动化测试】—— Appium使用保姆教程
android·经验分享·测试工具·程序人生·adb·appium·自动化
Change is good10 小时前
selenium xpath定位一组元素中的某一个
selenium·一组元素
network_tester1 天前
手机网络性能测试仪器介绍
网络·网络协议·tcp/ip·测试工具·信息与通信·信号处理·tcpdump
天堂的恶魔9461 天前
软件测试 ——Postman(Newman的使用)
测试工具·postman
天堂的恶魔9462 天前
软件测试 —— Postman(全局变量和环境变量,请求前置脚本,关联)
测试工具·lua·postman
moton20173 天前
5步打造完善的物联网IoT测试体系
物联网·测试工具·可用性测试·iot·物联网测试·测试体系
门豪杰3 天前
使用Chrome和Selenium实现对Superset等私域网站的截图
前端·chrome·selenium·superset·截图
m0_748248773 天前
小白爬虫——selenium入门超详细教程
爬虫·selenium·测试工具
清风细雨_林木木3 天前
Postman的使用
测试工具·postman