模块驱动的模型虽然解决了脚本的重复问题,但是需要测试不同数据的用例时,模块驱动的方式就不很适合了。 数据驱动就是数据的改变从而驱动自动化测试的执行,最终引起测试结果的改变。 装载数据的方式可以是列表、字典或是外部文件(txt、csv、xml、excel),目的就是实现数据和脚本的分离。

代码实现如下:(文章代码url地址为内部地址,我隐藏掉了,你们可以换成其他地址哦)

  1. # #!/usr/bin/python3
  2. # -*- coding: utf-8 -*-
  3. # @Time : 2020/8/13 13:46
  4. # @Author : Gengwu
  5. # @FileName: LoginClass_Para.py
  6. # @Software: PyCharm
  7.  
  8. from selenium import webdriver
  9. from time import sleep
  10. from selenium.webdriver.common.action_chains import ActionChains
  11.  
  12. class Login(): #定义一个类,类下面封装两个方法,一个登录,一个退出
  13. def user_login(self,driver,username,password):
  14. # 清除用户名的框,防止自动带入
  15. driver.find_element_by_id('account').clear()
  16. driver.find_element_by_id('account').send_keys(username)
  17.  
  18. # 清除密码的框,防止自动带入
  19. driver.find_element_by_id('password').clear()
  20. driver.find_element_by_id('password').send_keys(password)
  21.  
  22. # 点击登录按钮
  23. driver.find_element_by_css_selector(
  24. '#app > div > div > div.content > form > div.login-form-button-item > button').click() # copy到selector
  25. sleep(2)
  26.  
  27. def user_logout(self,driver):
  28. # 通过悬浮框定位到退出登录
  29. above = driver.find_element_by_class_name('author')
  30. ActionChains(driver).move_to_element(above).perform()
  31. driver.find_element_by_link_text('退出登录').click()
  32.  
  33. sleep(2)
  34. # 点击弹框的确定按钮
  35. driver.find_element_by_css_selector('.ant-modal-body .ant-btn-primary').click()
  36. sleep(2)

数据驱动调用——实现多个账户登录

  1. # #!/usr/bin/python3
  2. # -*- coding: utf-8 -*-
  3. # @Time : 2020/8/13 14:11
  4. # @Author : Gengwu
  5. # @FileName: CallLogin_Para.py
  6. # @Software: PyCharm
  7.  
  8. from selenium import webdriver
  9. from time import sleep
  10. from LoginClass_Para import *
  11.  
  12. driver=webdriver.Chrome()
  13. driver.get('https://qa***.com/')
  14. driver.maximize_window()
  15. driver.implicitly_wait(10)
  16. sleep(3)
  17.  
  18. Login().user_login(driver,'admin','admin')
  19. sleep(3)
  20. Login().user_logout(driver)
  21.  
  22. Login().user_login(driver,'test','')
  23. sleep(3)
  24. Login().user_logout(driver)
  25.  
  26. sleep(3)
  27. driver.quit()

脚本放到同一个文件夹下,就可以试下调用。

以上如果有问题欢迎随时沟通和交流。

Best Regards!
Make a little progress every day!

Selenium数据驱动测试模型和实例的更多相关文章

  1. python for selenium 数据驱动测试

    # -*- coding:utf-8 -*- """ 数据驱动测试,从 csv 文件中读取数据 """ from selenium impo ...

  2. Python&Selenium 数据驱动测试【unittest+ddt+xml】

    一.摘要 本博文将介绍Python和Selenium做自动化测试时,基于unittest框架,借助ddt模块,使用xml文件作为测试输入. 二.xml文件 保存路径:D:\\Programs\\Pyt ...

  3. Selenium(十四):自动化测试模型介绍、模块化驱动测试案例、数据驱动测试案例

    1. 自动化测试模型介绍 随着自动化测试技术的发展,演化为了集中模型:线性测试.模块化驱动测试.数据驱动测试和关键字驱动测试. 下面分别介绍这几种自动化测试模型的特点. 1.1 线性测试 通过录制或编 ...

  4. web自动化测试-模块驱动测试实例和数据驱动测试实例

    一.模块驱动测试实例 把登录和退出统一封装在login类中,若把login类单独放在一个文件中,就可以给任一测试脚本调用,这里就跟测试脚本放一起 from selenium import webdri ...

  5. Python Selenium 之数据驱动测试

    数据驱动模式的测试好处相比普通模式的测试就显而易见了吧!使用数据驱动的模式,可以根据业务分解测试数据,只需定义变量,使用外部或者自定义的数据使其参数化,从而避免了使用之前测试脚本中固定的数据.可以将测 ...

  6. Python+Selenium笔记(十二):数据驱动测试

    (一)   前言 通过使用数据驱动测试,实现对输入值和预期结果的参数化.(例如:输入数据和预期结果可以直接读取Excel文档的数据) (二)   ddt 使用ddt执行数据驱动测试,ddt库可以将测试 ...

  7. Selenium WebDriver 数据驱动测试框架

    Selenium WebDriver 数据驱动测试框架,以QQ邮箱添加联系人为示例,测试框架结构如下图,详细内容请阅读吴晓华编著<Selenium WebDiver 实战宝典>: Obje ...

  8. selenium自动化测试之【数据驱动测试】

    数据驱动测试是自动化测试的主流设计模式之一,相同的测试脚本使用不同的测试数据来执行,测试数据和测试行为进行了完全的分离,这样的测试脚本设计模式称为数据驱动.实施数据驱动测试的步骤:1.编写测试脚本,脚 ...

  9. Python Selenium 之数据驱动测试的实现

    数据驱动模式的测试好处相比普通模式的测试就显而易见了吧!使用数据驱动的模式,可以根据业务分解测试数据,只需定义变量,使用外部或者自定义的数据使其参数化,从而避免了使用之前测试脚本中固定的数据.可以将测 ...

随机推荐

  1. Python 简明教程 --- 23,Python 异常处理

    微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 要么做第一个,要么做最好的一个. 目录 我们在编写程序时,总会不自觉的出现一些错误,比如逻辑错误,语 ...

  2. 题解 CF1359A 【Berland Poker】

    题意 给出 \(n,m,k\) ,表示 \(k\) 名玩家打牌,共 \(n\) 张牌,\(m\) 张王,保证 \(k|n\) ,记得分为 拿到最多王的玩家手中王数 \(-\)拿到第二多王的玩家手中的王 ...

  3. javascript : splice(0) 的妙用

    今天看前同事的代码,有个写法很有意思: splice(0). 有意思的是,这并不是一个“合法”的写法. w3school是这样写的: arrayObject.splice(index,howmany, ...

  4. 3c数码商城

    目标:2020样卷 已完成:增删改查 未完成:有些小知识点不在意丢失,因此导致有些未完善 解决方案:写代码时不要走心,专心一点,减少失误,减少时间,增加效率,使自己的项目看起来更优秀,注意小知识的掌握 ...

  5. centos7+jexus5.8.3部署ASP.NET的MVC项目

    1.在centos7终端以root权限安装jexus5.8.3的独立版 命令:curl https://jexus.org/release/x64/install.sh|sh 2.跳转到目录/usr/ ...

  6. 清晰架构(Clean Architecture)的Go微服务—重大升级

    去年,我创建了一个清晰架构(Clean Architecture)微服务框架,它功能强大,但有些重.我写了一个系列文章来讲述它,请参阅"清晰架构(Clean Architecture)的Go ...

  7. 跟老刘学运维day02~部署虚拟环境安装Linux系统(1)

    第1章 部署虚拟环境安装Linux系统 所谓“工欲善其事,必先利其器” 1.准备工具 VmwareWorkStation  15.5——虚拟机软件(必需) RedHatEnterpriseLinux ...

  8. linux虚拟机正常安装完成后获取不到IP的解决办法-网卡

    通常正常情况下安装完linux虚拟机,只需要使用桥接并修改配置文件/etc/sysconfig/network-scripts/ifcfg-eth0,将如下参数值改为如下: ONBOOT=yes NM ...

  9. onepill服务端

    运行git搞崩掉了重新创建... 1.新建SpringBoot项目 应该就这些 2. 使用的框架: 数据库:Spring Date JPA Service+Dao+Controller OKHttpC ...

  10. Web压测工具之Webbench和http_load

    Webbench简介 是知名的网站压力测试工具,能测试处在相同硬件上,不同服务的性能以及不同硬件上同一个服务的运行状况. webbench的标准测试可以向我们展示服务器的两项内容:每秒钟相应请求数和每 ...