zoukankan      html  css  js  c++  java
  • Selenium2+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参数化去解决。

  • 相关阅读:
    Redis 6.0 新特性多线程连环13问!
    这些Java8官方挖过的坑,你踩过几个?
    读Hadoop3.2源码,深入了解java调用HDFS的常用操作和HDFS原理
    AI学习笔记:人工智能与机器学习概述
    千亿级互联网平台技术架构及背后那些事
    报告老板,微服务高可用神器已祭出,您花巨资营销的高流量来了没?
    千亿级平台技术架构:为了支撑高并发,我把身份证存到了JS里
    从技术思维角度聊一聊『程序员』摆地摊的正确姿势
    TryCatch包裹的代码异常后,竟然导致了产线事务回滚!
    SpringBoot集成邮件发送
  • 原文地址:https://www.cnblogs.com/caoj/p/7805282.html
Copyright © 2011-2022 走看看