今天小编要介绍的是数据驱动最简单和最常用的一种方法,由于只是介绍方法,代码操作后的美观程度略有缺陷,介意者可以自行改动

还是以163邮箱登录为例:

设计一个存放数据的类,这个类的参数是我们需要修改的数据,然后再类外传入数据

class Data(object):
def __init__(self,userName='',userPsw=''):
self.userName=userName
self.userPsw=userPsw u1=Data(userName="xxx1",userPsw="xxx1")
u2=Data(userName="xxx2",userPsw="xxx2")

设计登录方法,这个方法在之前小编已经介绍过,本次仅对其中的代码稍作更改

#给login方法增加一个参数,用于接受用户的登录信息
def login(user):
#定位
name = driver.find_element_by_id("op_email3_username")
password = driver.find_element_by_class_name("op_email3_password")
#清空,用clear清空输入框,因为sendkeys方法是在输入框中添加内容,若输入框已有内容,则会在原有内容的基础上加上新增内容
name.clear()
password.clear()
'''
传参
调用user存储的信息
'''
name.send_keys(user.userName)
password.send_keys(user.userPsw)
#登录
login = driver.find_element_by_css_selector(".c-btn")
login.click()
#切换回主窗口
driver.switch_to.window(driver.current_window_handle)

最后,调用login方法,实现数据驱动自动化测试的运行。

login(u1)
login(u2)

在代码中使用数据驱动,可以实现数据和方法的分离,在增加和修改数据的时候,只需要改变用户信息(u1=Data(userName="xxx1",userPsw="xxx1"))部分,和最后的login调用即可,可增加测试脚本的稳定性和可扩展性。

源码奉上,敬请指正:

from selenium import webdriver
import time,unittest
# 打开百度
driver = webdriver.Firefox()
driver.implicitly_wait(5)
driver.get("https://www.baidu.com/")
driver.find_element_by_id("kw").send_keys("163邮箱登录")
driver.find_element_by_id("su").click() class Data(object):
def __init__(self,userName='',userPsw=''):
self.userName=userName
self.userPsw=userPsw u1=Data(userName="",userPsw="wsz768950")
u2=Data(userName="xxx",userPsw="xxx") #给login方法增加一个参数,用于接受用户的登录信息
def login(user):
#定位
name = driver.find_element_by_id("op_email3_username")
password = driver.find_element_by_class_name("op_email3_password")
#清空,用clear清空输入框,因为sendkeys方法是在输入框中添加内容,若输入框已有内容,则会在原有内容的基础上加上新增内容
name.clear()
password.clear()
'''
传参
调用user存储的信息
'''
name.send_keys(user.userName)
password.send_keys(user.userPsw)
#登录
login = driver.find_element_by_css_selector(".c-btn")
login.click()
#切换回主窗口
driver.switch_to.window(driver.current_window_handle) login(u1)
time.sleep(5)
login(u2) time.sleep(10)
driver.quit()

数据驱动

最新文章

  1. QQ5.0左侧滑动显示效果
  2. apache activemq 学习笔记
  3. C#实现图标批量下载
  4. FusionCharts或其它flash的div图层总是浮在最上层? (转)
  5. swt byte[] 与 Image的转换
  6. linux下的mount命令的用法详解
  7. 写给Python初学者的设计模式入门
  8. php随机抽奖实例分析
  9. Ubuntu12.04创建 Eclipse launcher
  10. hadoop版本号变迁
  11. 关于Java的发展前景
  12. Python 3.X 调用多线程C模块,并在C模块中回调python函数的示例
  13. python/numpy/tensorflow中,对矩阵行列操作,下标是怎么回事儿?
  14. 【NOIP2009】【CJOJ1687】【洛谷1074】靶形数独
  15. 使用Notepad++开发Java程序
  16. ELK原理与介绍
  17. go 函数类型
  18. suoi37 清点更多船只 (卡空间线段树)
  19. [BZOJ4987]Tree
  20. SOAP和WebService的那些事

热门文章

  1. perl 操作文件指针
  2. (八)SpringBoot使用mybatis-plus+自动代码生成
  3. Python scrapy框架爬取瓜子二手车信息数据
  4. Zju1610 Count the Colors(lazy标记详解)
  5. python之yagmail发送邮件
  6. 用javascript编写一个简单的随机验证码程序
  7. vue axios post不能本地json
  8. MySql数据库的相关操作
  9. 从零开始利用vue-cli搭建简单音乐网站(六)
  10. DVWA之文件包含(File inclusion)