01
python之ui自动化用例封装
一、编写自动化用例步骤
1、设计自动化用例场景
2、搭建自动化测试环境
3、根据自动化测试场景编写每一条自动化脚本
4、将编写好的自动化用例,封装到一个类中,方便管理
二、实战
1、登录的自动化用例场景(打开页面==输入账号==输入密码==登录)
2、根据场景,编写代码
(1)第一条用例
from selenium import webdriver
import time
dx=webdriver.Chrome()
dx.get("http://49.233.201.254:8080/cms/manage/login.do")
dx.find_element_by_id("userAccount").send_keys("admin")
dx.find_element_by_id("loginPwd").send_keys("123456")
dx.find_element_by_id("loginBtn").click()
(2)添加用户接口
步骤:(打开网页==输入账号==输入密码==点击登录==用户中心==用户管理==新建用户==填写用户信息)
from selenium import webdriver
import time
dx=webdriver.Chrome()
dx.get("http://49.233.201.254:8080/cms/manage/login.do") #打开网页
dx.find_element_by_id("userAccount").send_keys("admin") #输入账号
dx.find_element_by_id("loginPwd").send_keys("123456") #输入密码
dx.find_element_by_id("loginBtn").click() #点击登录按钮
dx.implicitly_wait(10) #隐性等待
dx.find_element_by_class_name("icon-user").click() #用户中心
time.sleep(1)
dx.find_element_by_link_text("用户管理").click() #用户管理
time.sleep(1)
user=dx.find_element_by_name("/cms/manage/user-list.html") #找到用户添加的frme的位置
dx.switch_to.frame(user) #切换frame框
dx.find_element_by_class_name("btn-primary").click() #点击添加用户
time.sleep(1)
addUser=dx.find_element_by_id("xubox_iframe1") #添加用户信息的弹框
dx.switch_to.frame(addUser) #切换用户信息弹框
dx.find_element_by_id("userName").send_keys("sotfish") #用户账号
dx.find_element_by_xpath('//*[@id="userSex" and @value="0"]').click() #选择性别
dx.find_element_by_id("user-tel").send_keys("13211111111") #手机号
dx.find_element_by_id("user-email").send_keys("sotfish@126.com") #邮箱
dx.find_element_by_id("userAccount").send_keys("sotfish") #登录账号
dx.find_element_by_id("loginPwd").send_keys("123456") #登录密码
dx.find_element_by_id("confirmPwd").send_keys("123456") #密码
time.sleep(2) #休眠
dx.find_element_by_id("submitBtn").click() #点击确定
(3)第三条用例,删除用户信息
from selenium import webdriver
import time
dx=webdriver.Chrome()
dx.get("http://49.233.201.254:8080/cms/manage/login.do")
dx.find_element_by_id("userAccount").send_keys("admin")
dx.find_element_by_id("loginPwd").send_keys("123456")
dx.find_element_by_id("loginBtn").click()
dx.implicitly_wait(10)
dx.find_element_by_class_name("icon-user").click()
time.sleep(1)
dx.find_element_by_link_text("用户管理").click()
time.sleep(1)
user=dx.find_element_by_name("/cms/manage/user-list.html")
dx.switch_to.frame(user)
f=0
while 1:
try:
for i in range(10):
trname = dx.find_element_by_xpath("/html/body/div/table/tbody/tr[" + str(i + 1) + "]/td[3]/u").text
if trname == "sotfish":
dx.find_element_by_xpath("/html/body/div/table/tbody/tr[" + str(i + 1) + "]/td[9]/a[4]").click()
f = 1
time.sleep(1)
break
if f==1:
dx.find_element_by_class_name("xubox_botton2").click()
break
dx.find_element_by_link_text("下一页>").click()#网页“下一页”按钮逻辑不对,不停点击下一页跳转到的页数是1,2,21,211,674
time.sleep(1)
except Exception as e:
print(e)
break
(4)系统添加栏目
from selenium import webdriver
import time
from selenium.webdriver.support.select import Select
dx=webdriver.Chrome()
dx.get("http://49.233.201.254:8080/cms/manage/login.do")
dx.find_element_by_id("userAccount").send_keys("admin")
dx.find_element_by_id("loginPwd").send_keys("123456")
dx.find_element_by_id("loginBtn").click()
dx.implicitly_wait(10)
dx.find_element_by_class_name("icon-cogs").click()
time.sleep(1)
dx.find_element_by_link_text("栏目设置").click()
time.sleep(1)
addLm=dx.find_element_by_name("/cms/manage/article-class.html")
dx.switch_to.frame(addLm)
dx.find_element_by_class_name("btn-primary").click()
time.sleep(1)
addLm=dx.find_element_by_class_name("xubox_iframe")
dx.switch_to.frame(addLm)
dx.find_element_by_id("categoryName").send_keys("s777")
sj=dx.find_element_by_id("parentId")
Select(sj).select_by_visible_text("123")
dx.find_element_by_id("categoryCode").send_keys("s777")
dx.find_element_by_name("categoryDesc").send_keys("77777")
dx.find_element_by_name("keyTitle").send_keys("77777")
dx.find_element_by_name("keyWords").send_keys("77777")
dx.find_element_by_name("keyDesc").send_keys("77777")
time.sleep(1)
dx.find_element_by_id("submitBtn").click()
第5个用例:删除栏目
from selenium import webdriver
import time
dx=webdriver.Chrome()
dx.get("http://49.233.201.254:8080/cms/manage/login.do")
dx.find_element_by_id("userAccount").send_keys("admin")
dx.find_element_by_id("loginPwd").send_keys("123456")
dx.find_element_by_id("loginBtn").click()
dx.implicitly_wait(10)
dx.find_element_by_class_name("icon-cogs").click()
time.sleep(1)
dx.find_element_by_link_text("栏目设置").click()
time.sleep(1)
addLm=dx.find_element_by_name("/cms/manage/article-class.html")
dx.switch_to.frame(addLm)
f=0
while 1:
try:
for i in range(10):
trname = dx.find_element_by_xpath("/html/body/div/table/tbody/tr["+str(i+1)+"]/td[5]").text
print(trname)
if trname == "s777":
dx.find_element_by_xpath("/html/body/div/table/tbody/tr["+str(i+1)+"]/td[10]/a[2]").click()
f = 1
time.sleep(1)
break
if f==1:
dx.find_element_by_class_name("xubox_botton2").click()
break
dx.find_element_by_link_text("下一页>").click()#网页“下一页”按钮逻辑不对
time.sleep(1)
except Exception as e:
print(e)
break
三、将每一条编写的用例封装:
可以先分类
在类中编写函数

写在一个类中











案例:
from selenium import webdriver
import time
from selenium.webdriver.support.select import Select
class Cms(object):
def __init__(self,username,password):
self.username=username
self.password=password
self.dx = webdriver.Chrome()
self.dx.get("http://49.233.201.254:8080/cms/manage/login.do")
def login(self):
self.dx.find_element_by_id("userAccount").send_keys(self.username)
self.dx.find_element_by_id("loginPwd").send_keys(self.password)
self.dx.find_element_by_id("loginBtn").click()
def addUser(self,*u):
self.login()
self.dx.implicitly_wait(10)
self.dx.find_element_by_class_name("icon-user").click()
time.sleep(1)
self.dx.find_element_by_link_text("用户管理").click()
time.sleep(1)
self.dx.find_element_by_class_name("icon-user").click()
time.sleep(1)
user = self.dx.find_element_by_name("/cms/manage/user-list.html")
self.dx.switch_to.frame(user)
self.dx.find_element_by_class_name("btn-primary").click()
time.sleep(1)
addUser = self.dx.find_element_by_id("xubox_iframe1")
self.dx.switch_to.frame(addUser)
self.dx.find_element_by_id("userName").send_keys(u[0])
if u[1]=="女":
self.dx.find_element_by_xpath('//*[@id="userSex" and @value="0"]').click()
self.dx.find_element_by_id("user-tel").send_keys(u[2])
self.dx.find_element_by_id("user-email").send_keys(u[3])
self.dx.find_element_by_id("userAccount").send_keys(u[4])
self.dx.find_element_by_id("loginPwd").send_keys(u[5])
self.dx.find_element_by_id("confirmPwd").send_keys(u[5])
time.sleep(2)
self.dx.find_element_by_id("submitBtn").click()
self.dx.switch_to.default_content()
def deleteUser(self,un):
self.dx.implicitly_wait(10)
self.dx.find_element_by_class_name("icon-user").click()
time.sleep(1)
self.dx.find_element_by_link_text("用户管理").click()
time.sleep(1)
self.dx.find_element_by_class_name("icon-user").click()
time.sleep(1)
user = self.dx.find_element_by_name("/cms/manage/user-list.html")
self.dx.switch_to.frame(user)
f = 0
while 1:
try:
for i in range(10):
trname = self.dx.find_element_by_xpath("/html/body/div/table/tbody/tr[" + str(i + 1) + "]/td[3]/u").text
if trname == un:
self.dx.find_element_by_xpath("/html/body/div/table/tbody/tr[" + str(i + 1) + "]/td[9]/a[4]").click()
f = 1
time.sleep(1)
break
if f == 1:
self.dx.find_element_by_class_name("xubox_botton2").click()
break
self.dx.find_element_by_link_text("下一页>").click() # 网页“下一页”按钮逻辑不对,不停点击下一页跳转到的页数是1,2,21,211,674
time.sleep(1)
except Exception as e:
print(e)
break
self.dx.switch_to.default_content()
def addLm(self,*l):
self.login()
self.dx.implicitly_wait(10)
self.dx.find_element_by_class_name("icon-cogs").click()
time.sleep(1)
self.dx.find_element_by_link_text("栏目设置").click()
time.sleep(1)
self.dx.find_element_by_class_name("icon-cogs").click()
time.sleep(1)
addLm = self.dx.find_element_by_name("/cms/manage/article-class.html")
self.dx.switch_to.frame(addLm)
self.dx.find_element_by_class_name("btn-primary").click()
time.sleep(1)
addLm = self.dx.find_element_by_class_name("xubox_iframe")
self.dx.switch_to.frame(addLm)
self.dx.find_element_by_id("categoryName").send_keys(l[0])
sj = self.dx.find_element_by_id("parentId")
Select(sj).select_by_visible_text(l[1])
self.dx.find_element_by_id("categoryCode").send_keys(l[2])
self.dx.find_element_by_name("categoryDesc").send_keys(l[3])
self.dx.find_element_by_name("keyTitle").send_keys(l[4])
self.dx.find_element_by_name("keyWords").send_keys(l[5])
self.dx.find_element_by_name("keyDesc").send_keys(l[6])
time.sleep(1)
self.dx.find_element_by_id("submitBtn").click()
self.dx.switch_to.default_content()
def deleteLm(self,ln):
self.login()
self.dx.implicitly_wait(10)
self.dx.find_element_by_class_name("icon-cogs").click()
time.sleep(1)
self.dx.find_element_by_link_text("栏目设置").click()
time.sleep(1)
self.dx.find_element_by_class_name("icon-cogs").click()
time.sleep(1)
addLm = self.dx.find_element_by_name("/cms/manage/article-class.html")
self.dx.switch_to.frame(addLm)
f = 0
while 1:
try:
for i in range(10):
trname = self.dx.find_element_by_xpath("/html/body/div/table/tbody/tr[" + str(i + 1) + "]/td[5]").text
if trname == ln:
self.dx.find_element_by_xpath("/html/body/div/table/tbody/tr[" + str(i + 1) + "]/td[10]/a[2]").click()
f = 1
time.sleep(1)
break
if f == 1:
self.dx.find_element_by_class_name("xubox_botton2").click()
break
self.dx.find_element_by_link_text("下一页>").click() # 网页“下一页”按钮逻辑不对
time.sleep(1)
except Exception as e:
print(e)
break
self.dx.switch_to.default_content()
if __name__ == '__main__':
d=Cms("admin","123456")
# d.login()
# d.addUser("sotfish","女","13211111111","sotfish@126.com","sotfish","123456","123456")
# d.deleteUser("sotfish")
# d.addLm("s777","123","s777","77777","77777","77777","77777")
d.deleteLm("s777")
培训成功就业30000+;
讲师团队:20+;
班级人数:15-30(1个班)
软件测试:两个班级(1个月)
大数据班:3个班级(1个月)
鸿蒙开发班:1个班级(1个月)
最高薪资:30k
最低薪资:7.5k
应届生最高:19k
应届生薪资:8-12k

学技术热线:15949613302
16607005847
Ai软件测试学习联系微信: 15949613302
Ai大数据学习联系微信 : xiaolehua003
鸿蒙开发:15949613302
扫码加微信
