前言

     在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参数化去解决。

在学习过程中有遇到疑问的,可以加selenium(python+java) QQ群交流:232607095

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

  1. Selenium2+python自动化44-元素定位参数化(find_element)

    前言 元素定位有八种方法,这个能看到这一篇的小伙伴都知道了,那么有没有一种方法,可以把八种定位合为一种呢?也就是把定位的方式参数化,如id,name.css等设置为一个参数,这样只需维护定位方式的参数 ...

  2. Selenium2+python自动化44-元素定位参数化(find_element)【转载】

    前言 元素定位有八种方法,这个能看到这一篇的小伙伴都知道了,那么有没有一种方法,可以把八种定位合为一种呢?也就是把定位的方式参数化,如id,name.css等设置为一个参数,这样只需维护定位方式的参数 ...

  3. 【重要】Selenium2+python自动化44-元素定位参数化(find_element)

    转:https://www.cnblogs.com/yoyoketang/p/6551274.html 前言 元素定位有八种方法,这个能看到这一篇的小伙伴都知道了,那么有没有一种方法,可以把八种定位合 ...

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

    前言      在17篇我们讲了excel数据的参数化,有人问了txt数据的参数化该怎么办呢,下面小编为你带你txt数据参数化的讲解 一.以百度搜索为例,自动搜索五次不同的关键字.输入的数据不同从而引 ...

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

    前言 问: Python 获取到Excel一列值后怎么用selenium录制的脚本中参数化,比如对登录用户名和密码如何做参数化? 答:可以使用xlrd读取Excel的内容进行参数化.当然为了便于各位小 ...

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

    前言 在设计用例的时候,有些用例只是参数数据的输入不一样,比如登录这个功能,操作过程但是一样的.如果用例重复去写操作过程会增加代码量,对应这种多组数据的测试用例,可以用数据驱动设计模式,一组数据对应一 ...

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

    前言 在设计用例的时候,有些用例只是参数数据的输入不一样,比如登录这个功能,操作过程但是一样的.如果用例重复去写操作过程会增加代码量,对应这种多组数据的测试用例,可以用数据驱动设计模式,一组数据对应一 ...

  8. Selenium2+python自动化13-Alert

    不是所有的弹出框都叫alert,在使用alert方法前,先要识别出它到底是不是alert.先认清楚alert长什么样子,下次碰到了,就可以用对应方法解决.alert\confirm\prompt弹出框 ...

  9. Selenium2+python自动化28-table定位

    前言 在web页面中经常会遇到table表格,特别是后台操作页面比较常见.本篇详细讲解table表格如何定位. 一.认识table 1.首先看下table长什么样,如下图,这种网状表格的都是table ...

随机推荐

  1. RabbitMQ中 exchange、route、queue的关系

    从AMQP协议可以看出,MessageQueue.Exchange和Binding构成了AMQP协议的核心,下面我们就围绕这三个主要组件    从应用使用的角度全面的介绍如何利用Rabbit MQ构建 ...

  2. PHP和Golang使用Thrift1和Thrift2访问Hbase0.96.2(ubuntu12.04)

    目录: 一.Thrift1和Thrift2的简要介绍 1) 写在前面 2) Thrift1和Thrift2的区别  二.Thrift0.9.2的安装 1) 安装依赖插件 2) Thrift0.9.2的 ...

  3. node版本管理器nvm(服务器项目相关)

    git项目 https://github.com/creationix/nvm 1.下载并安装NVM脚本 curl https://raw.githubusercontent.com/creation ...

  4. ADO.NET数据库操作助手类

    SQL语句操作增删查改助手类 using System; using System.Collections.Generic; using System.Configuration; using Sys ...

  5. Python---MySQL相关操作

    MySQL数据库操作 显示数据 SHOW DATABASES; #默认数据库: #mysql - 用户权限相关数据 #test - 用于用户测试数据 #information_schema - MyS ...

  6. C++中没有finally,那么应该在如何关闭资源

    这是一篇有趣的帖子 原文链接: http://bbs.csdn.net/topics/90070457 楼主: C++中没有finally,那么应该在哪里关闭资源? C++的try{}catch(){ ...

  7. Yii里文件上传的操作方法(图片修改,在详情上展示,批量上传待续...)

    $model->img= UploadedFile::getInstance($model,'img');if ($model->validate()) {//$model->img ...

  8. IntelliJ IDEA使用记录

    一.快捷键 1. 生成main方法 在编写代码的时候直接输入psv就会看到一个psvm的提示,此时点击tab键一个main方法就写好了. psvm 也就是public static void main ...

  9. [ActionScript 3.0] 喷泉效果

    pall为水珠影片剪辑 var count:int = 500; var zl:Number = 0.5; var balls:Array; balls = new Array(); for (var ...

  10. Codeforces 721C [dp][拓扑排序]

    /* 题意:给你一个有向无环图.给一个限定t. 问从1点到n点,在不超过t的情况下,最多可以拜访几个点. 保证至少有一条路时限不超过t. 思路: 1.由无后向性我们可以知道(取决于该图是一个DAG), ...