当前位置:首页>python>python之ui自动化用例封装

python之ui自动化用例封装

  • 2026-10-11 07:47:10
python之ui自动化用例封装

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 

扫码加微信

最新文章

随机文章