参数化脚本

什么是参数化

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

三种参数化的方法

  • 使用列表进行参数化
  • 读取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. Ruby 环境

    Ruby 环境 本地环境设置 如果您想要设置 Ruby 编程语言的环境,请阅读本章节的内容.本章将向您讲解与环境设置有关的所有重要的主题.建议先学习下面几个主题,然后再进一步深入学习其他主题: Lin ...

  2. NX二次开发-清除信息窗口中的内容,退出信息窗口UF_UI_exit_listing_window

    #include <uf.h> #include <uf_ui.h> UF_initialize(); //打开信息窗口 UF_UI_open_listing_window() ...

  3. Visual Studio Code 的简单试用体验

    首先对Visual Studio Code做一个大概的介绍.首先明确一下,这个Visual Studio Code(以下简称 vscode)是一个带GUI的代码编辑器,也就是只能完成简单的代码编辑功能 ...

  4. bagging和boosting以及rand-forest

    bagging: 让该学习算法训练多轮,每轮的训练集由从初始的训练集中随机取出的n个训练样本组成,某个初始训练样本在某轮训练集中可以出现多次或根本不出现,训练之后可得到一个预测函数序列h_1,⋯ ⋯h ...

  5. mysql的JDBC连接

    程序是通过DriverManager注册驱动,所以加载之后可以直接使用DriverMannagermysql中的多态: 不仅是赋值的时候使用了多态,返回的时候都是返回的借口(不是返回的子类对象),所以 ...

  6. 第三天:字典表dict、元组tuple、文件与类型汇总

    1.字典表dict 声明 {键: 值,...} dict(键=值) d = {'isbn':'13123','title':'python入门'} #字典表中的键不能使用诸如列表这种可以改变的,只能使 ...

  7. USACO2008 Cow Cars /// oj23323

    题目大意: N (1 ≤ N ≤ 50,000)头牛被编号为1-N,牛i可以在M(1 ≤ M ≤ N)条不同的高速路上以Si (1 ≤ Si ≤ 1,000,000) km/h的速度飞驰 为了避免相撞 ...

  8. pycharm连接数据库及相应操作

    1.连接数据库 2.pycharm中数据库的操作

  9. mysql UDF提权问题

    测试UDF提权,时候遇到问题,创建函数shell提示存在 当执行操作的时候又提示,shell函数不存在. FUNCTION mysql.shell does not exist 如果在测试环境下,一般 ...

  10. shell 命令 用户管理

     1. 查看保存用户相关信息的文件 [ cat /etc/passwd ]  [linux    :    x    :   1000  :   1000   :   linux,,,   :    ...