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

前言

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

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

测试脚本:

#coding=utf-8
from selenium import webdriver
import unittest, time, os
class 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参数化去解决。

学习过程中有疑问加seleniumQQ群:232607095

告诉大家一个好消息,小编开博客园啦,以后不方便手机查看的,也可以在pc上收藏我的博客地址:http://www.cnblogs.com/yoyoketang/

地址很好记哦,前面是cnblogs地址,后面是yoyoketang,搜藏这个地址,你懂得!

原文发布于微信公众号 - 从零开始学自动化测试(yoyoketang)

原文发表时间:2016-12-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏张尧博客

su和sudo之间的区别以及如何在Linux中配置sudo

5216
来自专栏用户2442861的专栏

深入讲解GCC和Make的区别(有涉及makefile文件哟!!!)

gcc是编译器 而make不是 make是依赖于Makefile来编译多个源文件的工具 在Makefile里同样是用gcc(或者别的编译器)来编译程序.

1.4K3
来自专栏码洞

天下无难试之HTTP协议面试刁难大全

小编是一个非典型面试官,对于HTTP协议的第一个问题,一般人会问常用的状态码有哪些。小编不这么问,小编的问题是HTTP的全称是什么,把英语给我说出来!

1001
来自专栏数据之美

shell 学习笔记(19)

声明:转载需署名出处,严禁用于商业用途! 1801.关于 nohup 后台运行的问题: nohup就是拒绝hup信号,没什么其他用途, 如...

2465
来自专栏Porschev[钟慰]的专栏

Nodejs学习笔记(八)--- Node.js + Express 实现上传文件功能(felixge/node-formidable)

前言   前面讲了一个构建网站的示例,这次在此基础上再说说web的常规功能----文件上传,示例以一个上传图片的功能为例子   上传功能命名用formidabl...

2659
来自专栏木头编程 - moTzxx

CentOS7 ab压力测试安装与解释

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011415782/article/de...

2832
来自专栏Linux驱动

13.Linux键盘按键驱动 (详解)

在上一节分析输入子系统内的intput_handler软件处理部分后,接下来我们开始写input_dev驱动 本节目标:        实现键盘驱动,让开发板的...

3965
来自专栏haifeiWu与他朋友们的专栏

测试环境服务器硬盘塞满问题排查

某天下午测试环境服务器出现tab无法补全命令,给出的提示大概意思就是说,无可用空间无法创建临时文件,不过这次跟上次出现的问题比较像,上次服务器出现的问题,因此楼...

1301
来自专栏IT可乐

Java 多线程详解(五)------线程的声明周期

Java 多线程详解(一)------概念的引入:https://cloud.tencent.com/developer/article/1012542 Jav...

2195
来自专栏c#开发者

消息队列(Message Queue)简介及其使用

消息队列(Message Queue)简介及其使用 利用 MSMQ(Microsoft Message Queue),应用程序开发人员可以通过发送和接收消息方...

5048

扫码关注云+社区

领取腾讯云代金券