最近正好在公司做的用python+selenium自动化测试的项目,这里就给大家讲解一下自动化测试中使用selenium截图的方法,截图的方法为get_screenshot_as_file()方法
工具/原料
python环境
浏览器驱动(我这里用的是谷歌的)
编译工具(我这里用的是sublime Text3)
简单的selenium截图
1、首先我线放一个魑徒扮阙简单的访问百度之后截图的代码,大家可以复制代码之后去运行一下,注意复制到编辑器中的空格问题之类的。from selenium import webdriverfrom time import sleepdriver = webdriver.Chrome()#driver= webdriver.Firefox()driver.get("http://www.baidu.com")driver.find_element_by_id('kw').send_keys('selenium')driver.find_element_by_id('su').click()sleep(5)# 截取当前窗口,并指定截图图片的保存位置driver.get_screenshot_as_file("D:\\selenium_img.png")sleep(5)driver.quit()
2、在上面这个代码运行之后,会自动访问百度,然后搜索selenium,然后截下浏览器的当前状态图片(下图为再电脑目录中的位置和上述代码的截图)
3、在使用上述这个代码的时候,我们有时候需要将文件名命名为中文,这个时候,我们可能需要画陲奴颁注意一些问题,需要将字符串的文件名前面加上一个u。例如由: driver.get_screenshot_as_file("D:\\这是截图selenium_img.png")改为 driver.get_screenshot_as_file(u"D:\\这是截图selenium_img.png")注意:有时候不加也是可以的,但是最好加上
selenium截图搭配BeautifulReport使用
1、在这个测试中,一般是要生成报告的,所以也就必定将生成html,而有时候我们需求就是要将截图放在HTML中,这里我就给大家说一下。
2、这里我们可以将截图的方法封装为一个方法,将文件名作为一个参数附上代码:(注意空格)def save_img(self, img_name): 垆杪屑丝#传入一个img_name, 并存储到默认的文件路径下 self.driver.get_screenshot_as_file('{}/{}.png'.format(os.path.abspath(self.img_path), img_name))
3、然后再在需要截图的地方调用该方法,然后在测试用例上使用@BeautifulReport.add_test_img(“图片名”)将图片加入到测试报告中由于截的图是公司的东西,所以不在这展示在报告中的截图了(但保证能成功)