参数化脚本

什么是参数化

  • 参数化就是用包含多组数据的参数列表,使之替换脚本中的响应常量值,这样,在脚本运行的时候,就会使用参数表中的数据来代替脚本中的常量值
  • 由于参数表中包含了多组数据,所以执行用例时,会多次自动运行脚本,每次使用不同组的数据来代替脚本,这个运行次数就是参数表中的记录数,每执行一次测试,称为一个反复

三种参数化的方法

  • 使用列表进行参数化
  • 读取TXT文件中的数据,读取文本有三种方式
    1. read():读取整个文件
    2. readline():读取一行数据
    3. readlines():读取所有行的数据
    4. user_file=open('test_data.txt','r')#以只读的方式打开test_data.txt文件,可标注文件路径或当文件和运行脚本在同一文件下时标注文件名称
      lines=user_file.readlines()#读取文件中的所有行,以数组的形式进行保存
      user_file.close()#关闭文件 #遍历在文件中取出的数组
      for line in lines:
      username=line.split(',')[0]#以逗号作为分隔符,取出数组中的第一个元素
      password=line.split(','[1])#以逗号作为分隔符,取出同一数组中的第二个元素
      print(username.password)
  • 获取CSV文件中的数据
  • import csv#引入CSV包
    data=csv.reader(open('D:\\test\\login.csv','r'))#读取CSV文件并以只读的方式打开CSV文件 for line in data:
    print(line[0], line[1])#line[0]即读取line中的第一列元素 

例子:使用参数化的方式实现在百度页面中搜索不同的关键字

from selenium import webdriver
import time
keys=['selenium','自动化测试','性能测试','接口测试']
driver=webdriver.Firefox()
driver.get('https://www.baidu.com') for text in keys:
driver.find_element_by_xpath('//input[@id="kw"]').clear()
driver.find_element_by_xpath('//input[@id="kw"]').send_keys(text)
driver.find_element_by_id('su').click()
print(driver.title)
time.sleep(2)
driver.quit() 

例子:以百度登录功能为例,使用读取txt文本的方式进行参数化

from selenium import webdriver
import time file_txt=open('D:\\test\\login.txt','r')
lines=file_txt.readlines()
file_txt.close() for line in lines:
username=line.split(',')[0]
password=line.split(',')[1]
print(username,password)
driver=webdriver.Firefox()
driver.get('http://www.baidu.com')
driver.find_element_by_link_text('登录').click()
time.sleep(2)
driver.find_element_by_id('TANGRAM__PSP_10__footerULoginBtn').click()
driver.find_element_by_name('userName').send_keys(username)
driver.find_element_by_name('password').send_keys(password)
driver.find_element_by_id('TANGRAM__PSP_10__memberPass').click()
driver.find_element_by_id('TANGRAM__PSP_10__submit').click()
time.sleep(2)
driver.quit()

例子:以百度登录功能为例,使用读取CSV文件的方式进行参数化

from selenium import webdriver
import time
import csv#引入CSV包
data=csv.reader(open('D:\\test\\login.csv','r'))#读取CSV文件并以只读的方式打开CSV文件 for line in data:
print(line[0], line[1])#line[0]即读取line中的第一列元素
driver=webdriver.Firefox()
driver.get('http://www.baidu.com')
driver.find_element_by_link_text('登录').click()
time.sleep(2)
driver.find_element_by_id('TANGRAM__PSP_10__footerULoginBtn').click()
driver.find_element_by_name('userName').send_keys(line[0])#引用CSV文件中第一列元素
driver.find_element_by_name('password').send_keys(line[1])#引用CSV文件中第一列元素
driver.find_element_by_id('TANGRAM__PSP_10__memberPass').click()
driver.find_element_by_id('TANGRAM__PSP_10__submit').click()
time.sleep(2)
driver.quit()

selenium基础(参数化脚本)的更多相关文章

  1. selenium基础(脚本模块化)

    selenium基础(脚本模块化)

  2. web 自动化测试 selenium基础到应用(目录)

    第一章   自动化测试前提及整体介绍 1-1功能测试和自动化测试的区别 1-2自动化测试流程有哪些 1-3自动化测试用例和手工用例的区别 1-4 自动化测试用例编写 1-5 selenium的优势以及 ...

  3. Python+Selenium基础入门及实践

    Python+Selenium基础入门及实践 32018.08.29 11:21:52字数 3220阅读 23422 一.Selenium+Python环境搭建及配置 1.1 selenium 介绍 ...

  4. Selenium执行测试脚本稳定性的一些经验分享交流

    Selenium执行测试脚本稳定性的一些经验分享交流 公司的自动化WEB测试框架IATA已上线运行了一段时间,期间发现一些脚本稳定性的问题,与大家分享一下. CASE执行游览器:ie firefox ...

  5. 【Python爬虫】selenium基础用法

    selenium 基础用法 阅读目录 初识selenium 基本使用 查找元素 元素互交操作 执行JavaScript 获取元素信息 等待 前进后退 Cookies 选项卡管理 异常处理 初识sele ...

  6. Selenium | 基础入门 | 截屏并保存于本地

    可先参考   Selenium | 基础入门 | 利用Xpath寻找用户框 核心代码: //截屏操作 File srcFile = ((TakesScreenshot)driver).getScree ...

  7. Selenium 进行参数化

    Selenium参数化分为大小: 小:list.dict.函数 大:txt.excel.mysql.redis 哪种方式使自己的工作简单高效就选那种!!! Selenium进行参数化有多种形式: 本文 ...

  8. selenium基础-图形验证码

    selenium基础-图形验证码 一.图形验证码作用 设计的初衷其实就是为了防自动化,防止一些人利用自动工具恶意攻击网站 二.图形验证码是由客户端生成还是由服务器端生成的? 图形验证码是由服务器端生成 ...

  9. selenium基础-跳过验证码

    selenium基础-跳过验证码 一.方法 设置万能验证码或者屏蔽验证码(最常用的方法) 使用验证码识别工具识别验证码 通过selenium操作cookies 直接使用配置文件的webdriver 二 ...

随机推荐

  1. c++ 在类函数后加const的意义

    我们定义的类的成员函数中,常常有一些成员函数不改变类的数据成员,也就是说,这些函数是"只读"函数,而有一些函数要修改类数据成员的值.如果把不改变数据成员的函数都加上const关键字 ...

  2. NX二次开发-UFUN查询对象的类型和子类型UF_OBJ_ask_type_and_subtype

    NX9+VS2012 #include <uf.h> #include <uf_obj.h> #include <uf_modl.h> #include <u ...

  3. NX二次开发-相对路径环境变量和绝对路径环境变量

    相对路径环境变量:${UGII_BASE_DIR}\CaesarToolkits 绝对路径环境变量:D:\Program Files\Siemens\NX 9.0\CaesarToolkits

  4. CSS3:CSS3 文本效果

    ylbtech-CSS3:CSS3 文本效果 1.返回顶部 1. CSS3 文本效果 CSS3 文本效果 CSS3中包含几个新的文本特征. 在本章中您将了解以下文本属性: text-shadow bo ...

  5. flutter 动态申请权限

    https://pub.flutter-io.cn/packages/permission_handler https://www.jianshu.com/p/fa68876fbdfd 例 Futur ...

  6. 最详尽使用指南:超快上手Jupyter Notebook

    最详尽使用指南:超快上手Jupyter Notebook - CSDN博客https://blog.csdn.net/DataCastle/article/details/78890469

  7. (转)Python学习笔记(1)__name__变量

    Python使用缩进对齐组织代码的执行,所有没有缩进的代码,都会在载入时自动执行.每个文件(模块)都可以任意写一些没有缩进的代码,并在载入时自动执行.为了区分 主执行代码和被调用文件,Python引入 ...

  8. canvas前端压缩图片和视频首屏缩略图并上传到服务器

    图片: var img = document.createElement('img') img.src = window.URL.createObjectURL(fileObj.file) // 加载 ...

  9. Python: 比较两个字典是否相等

    有些情况下会遇到比较两个字典是否相等的问题 直观来想,会比较键是否一致,其对应的值是否相等 python中,还有有另外两种方法: 直接使用== a = {'a': 1, 'b': 2} b = {'a ...

  10. 现代软件工程HW2:结对编程-生成五则运算式-Core10组 [PB16110698+PB16120162]

    作业具体要求点 这里 Core组要求: 1.Calc() 这个Calc 函数接受字符串的输入(字符串里就是算术表达式,例如 “5*3.5”,“7/8 - 3/8 ”,“3 + 90 * 0.3”等等) ...