Selenium2+python自动化21-TXT数据参数化

前言

     在17篇我们讲了excel数据的参数化,有人问了txt数据的参数化该怎么办呢,下面小编为你带你txt数据参数化的讲解

一、以百度搜索为例,自动搜索五次不同的关键字。输入的数据不同从而引起输出结果的变化。

测试脚本:

#coding=utf-8from selenium import webdriverimport unittest, time, osclass Login(unittest.TestCase):    def test_login(self):        source = open("D:\\test\\txt.txt", "r")        values = source.readlines()        source.close()        # 执行循环        for hzy in values :           driver=webdriver.Firefox()           driver.get("http://www.baidu.com/")           driver.maximize_window()           driver.find_element_by_id("kw").send_keys(hzy)           driver.find_element_by_id("su").click()           time.sleep(2)           driver.close()

txt文件:

open方法以只读方式(r)打开本地txt.txt文件,readlines方法是逐行读取整个文件内容。

通过for循环,hzy可以每次获取到文件中一行数据,在定位到百度输入框后,将数据传入send_keys(hzy)。这样通过循环调用,直到文件的中的所有内容全被读取。

二、登录参数化
   现在按照上面的思路,对自动化脚本中用户、名密码进行参数化,通过 python 文档我们发现 python读取文件的方式有:整个文件读取、逐行读取、固定字节读取。

并没有找到一次读取两条数据的好方法。

创建两个文件,分别存放用户名密码。

测试脚本:

#coding=utf-8
   from selenium import webdriver
   from selenium.common.exceptions import NoSuchElementException
   import unittest, time, os
   class Login(unittest.TestCase):
         def test_login(self):
         source = open("D:\\test\\un.txt", "r") #用户名文件
         un = source.readline() #读取用户名
         source.close()
         source2 = open("D:\\test\\pw.txt", "r") #密码文件
         pw = source2.readline() #读取密码
         source2.close()
         driver=webdriver.Firefox()
         driver.get("http://www.baidu.com/")
         driver.maximize_window()
         driver.find_element_by_id("txtusername").clear()
         driver.find_element_by_id("txtusername").send_keys(un)
         driver.find_element_by_id("txtpassword").clear()
         driver.find_element_by_id("txtpassword").send_keys(pw)
         driver.find_element_by_id("userlogin").click()
         time.sleep(2)
         try:
             t = driver.find_element_by_xpath("//form/div[4]/div/div[1]/div[1]/div/a/img")
         except NoSuchElementException:
             assert 0 , u"登录失败,找不到左上角LOG"
         driver.close()

本来想用百度的例子的,无奈有验证码,麻烦,所以用了公司内网测试环境。

分别打开txt文件,通过un和pw来接收用户账户和密码信息,将接收的数据通过send_keys(XX)转入到执行程序中。

虽然目的达到了这,但这样的实现有很多问题:

1、用户名密码分别在不同的文件里,修改用户名和密码比较麻烦。
  2、un.txt 和 pw.txt 文件中只能保存一个用户密码,无能很好的循环读取。

多个账户和密码的txt文件,小编还未能找到解决的方法,欢迎大家给出意见和想法。

多账户和密码建议还是用excel参数化去解决。

时间: 2024-12-09 13:54:13

Selenium2+python自动化21-TXT数据参数化的相关文章

Selenium2+python自动化20-Excel数据参数化【转载】

前言 问: Python 获取到Excel一列值后怎么用selenium录制的脚本中参数化,比如对登录用户名和密码如何做参数化? 答:可以使用xlrd读取Excel的内容进行参数化.当然为了便于各位小伙伴们详细的了解,小编一一介绍具体的方法. 一.编写登录用例: Step1:访问http://www.effevo.com (打个广告effevo是搜狗自研发的项目管理系统,完全免费,非常好用)Step2:点击页面右上角的登录Step3:输入用户名和密码后登录Step4:检查右上角的头像是否存在实现

Selenium2+python自动化21-TXT数据参数化【转载】

前言      在17篇我们讲了excel数据的参数化,有人问了txt数据的参数化该怎么办呢,下面小编为你带你txt数据参数化的讲解 一.以百度搜索为例,自动搜索五次不同的关键字.输入的数据不同从而引起输出结果的变化. 测试脚本: #coding=utf-8from selenium import webdriverimport unittest, time, osclass Login(unittest.TestCase): def test_login(self): source = ope

Selenium2+python自动化59-数据驱动(ddt)

前言 在设计用例的时候,有些用例只是参数数据的输入不一样,比如登录这个功能,操作过程但是一样的.如果用例重复去写操作过程会增加代码量,对应这种多组数据的测试用例,可以用数据驱动设计模式,一组数据对应一个测试用例,用例自动加载生成. 一.环境准备 1.安装ddt模块,打开cmd输入pip install ddt在线安装 >>pip install ddt 二.数据驱动原理 1.测试数据为多个字典的list类型 2.测试类前加修饰@ddt.ddt 3.case前加修饰@ddt.data() 4.运

Selenium2+python自动化59-数据驱动(ddt)【转载】

本篇转自博客:上海-悠悠 原文地址:http://www.cnblogs.com/yoyoketang/tag/unittest/ 前言 在设计用例的时候,有些用例只是参数数据的输入不一样,比如登录这个功能,操作过程但是一样的.如果用例重复去写操作过程会增加代码量,对应这种多组数据的测试用例,可以用数据驱动设计模式,一组数据对应一个测试用例,用例自动加载生成. 一.环境准备 1.安装ddt模块,打开cmd输入pip install ddt在线安装 >>pip install ddt 二.数据驱

Selenium2+python自动化39-关于面试的题

前言 最近看到群里有小伙伴贴出一组面试题,最近又是跳槽黄金季节,小编忍不住抽出一点时间总结了下, 回答不妥的地方欢迎各位高手拍砖指点. 一.selenium中如何判断元素是否存在? 首先selenium里面是没有这个方法的,判断元素存在需要自己写一个方法了. 元素存在有几种形式,一种是页面有多个元素属性重复的,这种直接操作会报错的:还有一种是页面隐藏的元素操作也会报错 判断方法参考这篇:Selenium2+python自动化36-判断元素存在 二.selenium中hidden或者是displa

Selenium2+python自动化52-unittest执行顺序

前言 很多初学者在使用unittest框架时候,不清楚用例的执行顺序到底是怎样的.对测试类里面的类和方法分不清楚,不知道什么时候执行,什么时候不执行. 本篇通过最简单案例详细讲解unittest执行顺序. 一.案例分析 1.先定义一个测试类,里面写几个简单的case # coding:utf-8import unittestimport timeclass Test(unittest.TestCase):    def setUp(self):        print "start!"

Selenium2+python自动化41-绕过验证码(add_cookie)

前言 验证码这种问题是比较头疼的,对于验证码的处理,不要去想破解方法,这个验证码本来就是为了防止别人自动化登录的.如果你能破解,说明你们公司的验证码吗安全级别不高,那就需要提高级别了. 对应验证码,要么是让开发在测试环境弄个万能的验证码,如:1234,要么就是尽量绕过去,如本篇介绍的添加cookie的方法. 一.fiddler抓包 1.前一篇讲到,登录后会生成一个已登录状态的cookie,那么只需要直接把这个值添加到cookies里面就可以了. 2.可以先手动登录一次,然后抓取这个cookie,

Selenium2+python自动化28-table定位【转载】

前言 在web页面中经常会遇到table表格,特别是后台操作页面比较常见.本篇详细讲解table表格如何定位. 一.认识table 1.首先看下table长什么样,如下图,这种网状表格的都是table 2.源码如下:(用txt文本保存,后缀改成html) <!DOCTYPE html><meta charset="UTF-8"> <!-- for HTML5 --><meta http-equiv="Content-Type"

Selenium2+python自动化52-unittest执行顺序【转载】

本篇转自博客:上海-悠悠 原文地址:http://www.cnblogs.com/yoyoketang/tag/unittest/ 前言 很多初学者在使用unittest框架时候,不清楚用例的执行顺序到底是怎样的.对测试类里面的类和方法分不清楚,不知道什么时候执行,什么时候不执行. 本篇通过最简单案例详细讲解unittest执行顺序. 一.案例分析 1.先定义一个测试类,里面写几个简单的case # coding:utf-8import unittestimport timeclass Test