简单的自动化测试模型(Python+Selenium)

发表于:2018-1-23 10:21

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:加班使我变丑智商下降    来源:博客园

  刚接触自动化测试,由于没有编程语言的基础,是搞不懂代码里面的函数、封装、包以及其他概念,只是了解字符串、数组、元组及字典这种最基本的名词,更不懂自动化测试框架了。
  在我这种外门汉的角度来看,代码不就是一页word文件写进去,从头执行到尾吗?其实不然,代码可不止一页word,很多页啊。
  看着虫师的书籍学习自动化测试,边看边敲还是会忘记,想想还是做做笔记比较合宜。这篇笔记来粗略记下学习自动化测试的几种模型,可能再之后回来看会有特别的感受,先这样记着吧。
  1、线性测试
  线性测试,顾名思义,就是一条路按照一条直线走到底。它的每个脚本都是独立的,都可以拿出来单独运行,来验证一个功能点,上两段小代码举个栗子:
  打开百度主页:
# coding:utf-8
from time import sleep  # 从time中引入sleep
from selenium import webdriver  # 从selenium中引入webdriver
driver = webdriver.Firefox()  # 选择打开的浏览器
driver.maximize_window()   # 浏览器窗口最大化
driver.implicitly_wait(3)  # 隐式等待
driver.get("https://www.baidu.com")  # 获取URL,打开页面
driver.quit()  # 退出相关浏览器
  打开百度主页,并输入查找内容:
# coding:utf-8
from time import sleep  # 从time中引入sleep
from selenium import webdriver  # 从selenium中引入webdriver
driver = webdriver.Firefox()  # 选择打开的浏览器
driver.maximize_window()   # 浏览器窗口最大化
driver.implicitly_wait(3)  # 隐式等待
driver.get("https://www.baidu.com")  # 获取URL,打开页面
search = driver.find_element_by_id("kw")  # 通过id定位搜索框
search.send_keys("selenium")  # 填入"selenium"
sleep(5)  # 直接等待
driver.quit()  # 退出相关浏览器
  以上两段代码,分别做了实现打开百度首页和打开百度首页后输入查找内容的功能,都可以单独拿出来执行。如果需要修改查找访问页面,那么我需要两段代码都需要修改。当这类独立的脚本数量多了起来,去修改这些内容花费的工作量太大,将会失去了自动化的目的。
  2、模块化与类库
login.py
# coding:utf-8
from time import sleep
from selenium import webdriver  # 从selenium中引入webdriver
def login_mantis():
driver = webdriver.Firefox()  # 选择打开的浏览器
driver.maximize_window()  # 浏览器窗口最大化
driver.implicitly_wait(3)  # 隐式等待
driver.get("http://192.168.1.201/mantisbt-1.2.19/login_page.php")  # 获取URL,打开页面
sleep(1)  # 直接等待
username = driver.find_element_by_xpath("html/body/div[3]/form/table/tbody/tr[2]/td[2]/input")  # 通过Xpath定位获取输入账号框
username.send_keys("wuhaobo")  # 输入账号
sleep(1)
password = driver.find_element_by_xpath("html/body/div[3]/form/table/tbody/tr[3]/td[2]/input")  # 通过Xpath定位获取输入密码框
password.send_keys("123456")  # 输入密码
sleep(1)
login = driver.find_element_by_xpath("html/body/div[3]/form/table/tbody/tr[6]/td/input")  # 通过Xpath定位获取登录按钮
login.click()  # 点击登录按钮
sleep(3)
  上面的代码实现了mantis登录功能。
quit.py
# coding:utf-8
from selenium import webdriver  # 从selenium中引入webdriver
def quit_mantis():
driver = webdriver.Firefox()  # 选择打开的浏览器
driver.quit()  # 退出相关浏览器
  上面的代码实现了mantis退出功能。
do_something_in_mantis.py
# coding:utf-8
from time import sleep  # 从time中引入sleep
from selenium import webdriver  # 从selenium中引入webdriver
import login  # 引入登录模块
import quit  # 引入退出模块
login.login_mantis()  # 调用登录模块
print ">>>以下操作为在登录界面后的操作"
# 需要做的操作放在登录和退出中间
print ">>>以上操作为在登录界面后的操作"
quit.quit_mantis()  # 调用退出模块
  上面的代码实现了调用登录模块和退出模块。
  通过以上代码可以发现,登录模块和退出模块可以让任意操作类脚本调用,省去了该部分代码的重复量,便于维护的同时,也加快了代码的开发速度。
  3、数据驱动
  直接理解成参数化输入,不同结果输出。
  (1)、读取TXT方式
  将存好登录的账号密码放置在两个TXT文件中:
# coding:utf-8
from time import sleep
from selenium import webdriver  # 从selenium中引入webdriver
username_file = open("G:\\joker_study\\username.txt")  # 打开账号文本路径
username = username_file.read()  # 取出账号
password_file = open("G:\\joker_study\\password.txt")  # 打开密码文本路径
password = password_file.read()  # 取出密码def login_mantis_by_txt():
driver = webdriver.Firefox()  # 选择打开的浏览器
driver.maximize_window()  # 浏览器窗口最大化
driver.implicitly_wait(3)  # 隐式等待
driver.get("http://192.168.1.201/mantisbt-1.2.19/login_page.php")  # 获取URL,打开页面
sleep(1)  # 直接等待
username_input = driver.find_element_by_xpath("html/body/div[3]/form/table/tbody/tr[2]/td[2]/input")  # 获取输入账号框
username_input.send_keys(username)  # 输入账号
sleep(1)
password_input = driver.find_element_by_xpath("html/body/div[3]/form/table/tbody/tr[3]/td[2]/input")  # 获取输入密码框
password_input.send_keys(password)  # 输入密码
sleep(1)
login_button = driver.find_element_by_xpath("html/body/div[3]/form/table/tbody/tr[6]/td/input")  # 获取登录按钮
login_button.click()  # 点击登录按钮
sleep(3)
driver.quit()  # 退出浏览器
  上面的代码实现了从TXT文件中读出账号和密码,再传入函数中,进行登录操作。
  (2)、通过函数
userconfig.py
# coding:utf-8
def username_password(username="CJOLER",password="123456"):
return username,password
login.py
# coding:utf-8
from time import sleep
from selenium import webdriver  # 从selenium中引入webdriver
import userconfig  # 引入userconfig文件
un, pw = userconfig.username_password()
print un, pw
def login_mantis_by_txt():
driver = webdriver.Firefox()  # 选择打开的浏览器
driver.maximize_window()  # 浏览器窗口最大化
driver.implicitly_wait(3)  # 隐式等待
driver.get("http://192.168.1.201/mantisbt-1.2.19/login_page.php")  # 获取URL,打开页面
sleep(1)  # 直接等待
username_input = driver.find_element_by_xpath("html/body/div[3]/form/table/tbody/tr[2]/td[2]/input")  # 获取输入账号框
username_input.send_keys(un)  # 输入账号
sleep(1)
password_input = driver.find_element_by_xpath("html/body/div[3]/form/table/tbody/tr[3]/td[2]/input")  # 获取输入密码框
password_input.send_keys(pw)  # 输入密码
sleep(1)
login_button = driver.find_element_by_xpath("html/body/div[3]/form/table/tbody/tr[6]/td/input")  # 获取登录按钮
login_button.click()  # 点击登录按钮
sleep(3)
driver.quit()  # 退出浏览器
  上面的代码实现了将账号密码放在一个函数内,再去调用,进行登录操作。

上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
21/212>
《2023软件测试行业现状调查报告》独家发布~

精彩评论

  • wyl1995
    2018-1-29 14:01:44

    def 下面的代码排版,,看着太难受了,随口说的,希望不要介意

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号