Web自动化测试【分层架构设计与实现】二:定位符驱动层

链接:https://blog.csdn.net/ak739105231/article/details/102409810说明了python实现web自动化测试的基本逻辑以及数据驱动层,简单的说就是如何将数据与业务分离,实现数据、脚本的维护更简洁。

一、定位符驱动层

1.定位符指的是定位web页面上特定元素的字符串。一般情况下,selenium定位方式有很多,但是对于一个测试脚本,建议全部都能统一为一种方式;这样方便脚本使用定位数据。推荐CSS,因为id、name、class都不能保证页面所有的元素都能使用这三种之一(简单的说,就是你不可能全部元素都能通过id或name来定位,因为有的元素没有id属性或name属性。甚则,class根本不唯一。),所以,本文章将以CSS的方式将定位符提取出来,作为独立的定位符驱动层

2.定位驱动层与之前的数据驱动层形式基本一样。定位符驱动层主要的作用是把定位符内容与具体的代码进行分离。当某个页面元素的定位符需要更新时,只需要更新定位符驱动层的内容,而不需要修改任何代码。

同样,定位符驱动层的存储方式也有两个,分别是:本地文本存储远程服务存储方式(之前数据驱动层说的数据库存储也是远程服务存储的一种)

1.1本地文件存储

定位符的本地文件存储方式也是有很多可选的,除了Python文件外,还有如同TXT、CSV、XML、JSON等格式可以选择。下面以CSV文件存储的形式来介绍定位符驱动层的提取与使用。

CSV(Comma-Separated Values)文件,又称:逗号分隔符文件;默认的CSV文件的每一行内容都是以逗号来分隔的;每一个小部分可以称之为列。

步骤1:准备在编写自动化脚本过程中需要使用到的定位符,想好合适的名称,存储在自己创建的csv文件中;

步骤2:编写读取csv文件的代码;

#!usr/bin/env python
# -*-coding:utf-8 -*-
'''
定位符读取
'''
import csv

def read_csv(file_path):
    '''
    读取csv里面的定位符
    :param file_path:<csv文件的地址路径>
    :return: d
    '''
    csv_file = open(file_path,'r')
    reader = csv.reader(csv_file)
    d = {}
    for line in reader:
        if not line:
            continue
        if len(line) < 2:
            d[line[0]] = ''   #若该行自有key没有value,就赋值空
        else:
            d[line[0]] = line[1]
    csv_file.close()
    return d

步骤3:在脚本中调用读取csv的方法,在需要的时候使用

2.1远程服务存储

远程存储是相对于本地存储方式而言的,它可以在不同机器间进行共享。上面链接中的数据驱动层的第二种存储方式:数据库存储就是远程存储方式的一种,除此之外,还可以使用web service 的方式来提供远程存储服务。下面还是以数据库存储的方式来介绍远程服务存储。

在这之前,需要将数据库安装好,并且做相关修改,如:非本机访问的IP限制

访问链接:https://blog.csdn.net/ak739105231/article/details/102487921

一切准备好之后,接下来的步骤1:开始定位符表结果的设计。这里的表结果应该是与数据驱动层的表结果差不多。

CREATE TABLE `locator` (
`id`  int(11) NOT NULL AUTO_INCREMENT ,
`module`  varchar(255) NULL COMMENT '模块名' ,
`page`  varchar(255) NOT NULL COMMENT '测试页名称' ,
`name`  varchar(255) NOT NULL COMMENT '测试数据名' ,
`value`  varchar(255) NOT NULL COMMENT '测试数据的值' ,
`desc`  varchar(255) NULL DEFAULT NULL COMMENT '测试数据的描述' ,
`status`  enum('inactive','active') NULL DEFAULT 'active' COMMENT '数据是否有效' ,
`createAt`  date NULL DEFAULT NULL ,
PRIMARY KEY (`id`)
)ENGINE = INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

接下来准备好,定位符数据:

步骤2:编写获取数据库定位符的脚步,放置在一个py文件下;(与数据驱动层类似,查询字段更加具体情况变更)

步骤3:导入获取数据库定位符的方法,实例化,使用其中的值;

可以看出,脚本中关于数据已经基本上没有与代码太多纠缠。定位符、测试数据都各自来源于定位符驱动层、数据驱动层;更方便数据的变更,代码的管理。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冷凝娇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值