selenium3

92 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第4天,点击查看活动详情

屏幕截图

有时候自动化用例执行会发生异常情况,或这个脚本执行的时候会出现预期之外的结果,这个时候我们会需要用到截图操作,我们就可以根据异常截图清楚的知道,发生了什么情况,代码如下:
①self.driver.get_screenshot_as_file('filename.png')
这个filename就是我们定义截图的名称,要以png为后缀,如果是jpg或者其他格式的话,会报错,但是程序还是回正常执行。这里还需要注意的是,这个文件需要填上绝对路径。在封装时,我们可以直接这么写:

def screenshot(self,filename):
    self.driver.get_screenshot_as_file(f'D:\项目名\Screenshot\\{filename}')

这么封装好之后,我们只需要调用这个方法即可:self.screenshot(Derroe.png) ②还有一种是获取格式为base64的屏幕截图,它一般用于保存在html报告中:
import base64
get_screenshot_as_base64()

当我们需要把自动化执行的错误信息收集起来的时候,我们就要用到错误日志下面已经是封装好的方法:
错误日志:
def getlog(self):
logDir = r'/Python/Ufactory Studio\Common\logging{}.log'.format(time.strftime('%Y-%m-%d', time.localtime())) logger = logging.getLogger('logger')
logger.setLevel(logging.DEBUG)
if not logger.handlers: # 处理日志重复问题(存在logger调试器将不添加下面的处理器等)
sh = logging.StreamHandler() # 处理器
filepath = logging.FileHandler(filename=logDir, encoding='utf-8') LOG_FORMATE = '%(asctime)s - %(filename)s - %(levelname)s - %(message)s' # p配置日志信息
DATE_FORMATE = '%Y-%m-%d %X' # 配置日志时间格式
formater = logging.Formatter(fmt=LOG_FORMATE, datefmt=DATE_FORMATE) sh.setFormatter(formater)
filepath.setFormatter(formater)
logger.addHandler(sh)
logger.addHandler(filepath)
return logger

为了实现数据与代码分离,便于我们对测试数据进行管理,和对代码脚本进行维护,还会用到数据驱动,下面以yaml数据驱动为例讲解以一下: yaml 文件内的内容是字典的格式,只需要以tab分隔就可以了

Motion:
  param:
    param1:
      - 1
      - 0
      - 0
      - 1
      - 0
    param2:
      - 50000
      - 100

yaml文件

def f_yaml(self):
    # 基础路径
    base_path = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
    # yaml路径
    yaml_path = base_path+"/TestDate/seting.yaml"
    # 获取yaml数据
    with open(yaml_path,'r',encoding='utf8') as f:
        date = yaml.load(stream=f, Loader=yaml.FullLoader)
    return date