我们的目标是:按照这一套资料学习下来,大家可以独立完成自动化测试的任务。
上一篇我们讨论了滑块的操作方法,本篇文章我们讲述一下截图的操作方法。希望能够帮到爱学的小伙伴。
在实际的测试项目组中我们经常要截屏保存报错信息,以便后续人工确认是否是真的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")
运行脚本查看文件夹下有对应的截图:
好了,今天就分享到这里。
每天进步一点点,加油!