在测试运行期间获取错误的截图,一方面可以给自己定位错误测试脚本提供方便,另外一方面,可以和开发人员进行有效的沟通,错误的截图不仅仅如此,它有助于调试测试或者创建测试运行的证据。如下是汇总了seleniumwebdriver带有内置方法在测试执行期间获取截图的方法,见如下:
方法 | 描述 | Example |
---|---|---|
save_screenshot(filename) | 获取当前的屏幕截图且保存 | driver.save_screenshot('test.png') |
get_screenshot_as_file(filename) | 获取当前的屏幕截图,使用完整的路劲 | driver.get_screenshot_as_file('result/test.png') |
get_screenshot_as_png() | 获取当前屏幕截图的二进制文件窗口数据 | driver.get_screenshot_as_png() |
get_screenshot_as_base64() | 获取当前的屏幕截图的base64编码 | driver.get_screenshot_as_base64() |
1、Save_screenshot():
save_screenshot(filename)是获取当前屏幕的截图,如我们打开http://www.videojs.com/,调用self.driver.save_screenshot('文件名称.png'),就会在当前目录下生成一个图片,该图片是打开窗口的屏幕截图,见实现的测试脚本:
#coding:utf-8
fromselenium import webdriver
fromselenium.webdriver.common.by import By
fromselenium.webdriver.support.ui import WebDriverWait
fromselenium.webdriver.support import expected_conditions
fromselenium.webdriver.common.action_chains import ActionChains
fromselenium.webdriver.common.keys import Keys
importunittest
fromtime import sleep
classdemoTest(unittest.TestCase):
def setUp(self):
self.driver=webdriver.Firefox()
self.driver.maximize_window()
self.driver.implicitly_wait(30)
self.driver.get('http://www.videojs.com/')
def testSavePng(self):
self.driver.save_screenshot('videojs.png')
def tearDown(self):
self.driver.quit()
if__name__=='__main__':
unittest.main(verbosity=2)
2、get_ screenshot_as_file():
get_screenshot_as_file(filename)是保存当前的屏幕截图,并且带有完整的路劲,我们任然已http://www.videojs.com/为实例,来获取屏幕截图:self.driver.get_screenshot_as_file('/path/videojs.png'),见如下实现的测试代码:
#coding:utf-8
fromselenium import webdriver
fromselenium.webdriver.common.by import By
fromselenium.webdriver.support.ui import WebDriverWait
fromselenium.webdriver.support import expected_conditions
fromselenium.webdriver.common.action_chains import ActionChains
fromselenium.webdriver.common.keys import Keys
importunittest
fromtime import sleep
classdemoTest(unittest.TestCase):
def setUp(self):
self.driver=webdriver.Firefox()
self.driver.maximize_window()
self.driver.implicitly_wait(30)
self.driver.get('http://www.videojs.com/')
def testGetScreen(self):
self.driver.get_screenshot_as_file('D:/git/PyCharm/TestCase/report/videojs.png')
def tearDown(self):
self.driver.quit()
if__name__=='__main__':
unittest.main(verbosity=2)
3、get_screenshot_as_png():
get_screenshot_as_png() 是获取当前屏幕的截图二进制的数据,我们任然已http://www.videojs.com/为实例,来获取首页屏幕截图的二进制数据并输出,输出的二进制数据为乱码,测试代码见如下:
#coding:utf-8
fromselenium import webdriver
fromselenium.webdriver.common.by import By
fromselenium.webdriver.support.ui import WebDriverWait
fromselenium.webdriver.support import expected_conditions
fromselenium.webdriver.common.action_chains import ActionChains
fromselenium.webdriver.common.keys import Keys
importunittest
fromtime import sleep
classdemoTest(unittest.TestCase):
def setUp(self):
self.driver=webdriver.Firefox()
self.driver.maximize_window()
self.driver.implicitly_wait(30)
self.driver.get('http://www.videojs.com/')
def testPng(self):
print self.driver.get_screenshot_as_png()
def tearDown(self):
self.driver.quit()
if__name__=='__main__':
unittest.main(verbosity=2)
4、get_screenshot_as_base64():
get_screenshot_as_base64()是获取当前屏幕截图的base64编码,我们已http://www.videojs.com/为例,输出该网站首页的base64的编码,见实现的测试代码:
#coding:utf-8
from selenium import webdriver
from selenium.webdriver.common.byimport By
from selenium.webdriver.support.uiimport WebDriverWait
from selenium.webdriver.support importexpected_conditions
fromselenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keysimport Keys
import unittest
from time import sleep
class demoTest(unittest.TestCase):
defsetUp(self):
self.driver=webdriver.Firefox()
self.driver.maximize_window()
self.driver.implicitly_wait(30)
self.driver.get('http://www.videojs.com/')
deftestBase64(self):
printself.driver.get_screenshot_as_base64()
deftearDown(self):
self.driver.quit()
if __name__=='__main__':
unittest.main(verbosity=2)