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