Webdriver内置了一些在测试中捕获屏幕的方法:
方法 | 方法描述 |
*save_screenshot(filename) | 获取当前屏幕截图并保存为指定文件,filename为指定保存的路径或文件名 |
get_screenshot_as_base64() | 获取当前屏幕截图base64编码字符串 |
*get_screenshot_as_file(filename) | 获取当前屏幕截图,使用完整的路径 |
get_screenshot_as_png() | 获取当前屏幕截图的二进制文件数据 |
以下实例,将在百度搜索框搜索#selenium#的结果进行一个截图:
from selenium import webdriver
from time import sleep
from selenium.webdriver.common.by import By
class TestCase(object):
def __init__(self):
self.driver=webdriver.Safari()
self.driver.get('http://www.baidu.com')
self.driver.maximize_window()
def t1(self):
self.driver.find_element(By.ID,"kw").send_keys('selenium')
self.driver.find_element(By.ID,"su").click()
sleep(2)
self.driver.save_screenshot('baidu.png')
if __name__ == '__main__':
case=TestCase()
case.t1()
实际测试过程中我们会把照片文件以日期的形式命名,也方便记录时间节点。接下来就对代码进行一些升级改造:
from selenium import webdriver
from time import sleep,strftime,localtime,time
from selenium.webdriver.common.by import By
class TestCase(object):
def __init__(self):
self.driver=webdriver.Safari()
self.driver.get('http://www.baidu.com')
self.driver.maximize_window()
def t1(self):
self.driver.find_element(By.ID,"kw").send_keys('selenium')
self.driver.find_element(By.ID,"su").click()
sleep(2)
st=strftime("%Y-%m-%d-%H-%M-%s",localtime(time()))
fime_name=st+'.png'
self.driver.save_screenshot(fime_name)
if __name__ == '__main__':
case=TestCase()
case.t1()
那我们想把截图保存到指定路径又该如何操作呢?请看以下代码:
from selenium import webdriver
from time import sleep,strftime,localtime,time
from selenium.webdriver.common.by import By
import os
class TestCase(object):
def __init__(self):
self.driver=webdriver.Safari()
self.driver.get('http://www.baidu.com')
self.driver.maximize_window()
def t1(self):
self.driver.find_element(By.ID,"kw").send_keys('selenium')
self.driver.find_element(By.ID,"su").click()
sleep(2)
st=strftime("%Y-%m-%d-%H-%M-%s",localtime(time()))
fime_name=st+'.png'
path=os.path.abspath('PC指定路径')
file_path=path+'/'+fime_name
self.driver.get_screenshot_as_file(file_path)
if __name__ == '__main__':
case=TestCase()
case.t1()