ui 自动化封装

一、编写自动化用例步骤
1、设计自动化用例场景
2、搭建自动化测试环境
3、根据自动化测试场景编写每一条自动化脚本
4、将编写好的自动化用例,封装到一个类中,方便管理
二、实战
1、登录的自动化用例场景(打开页面输入账号输入密码登录)
2、根据场景,编写代码
(1)第一条用例
image
(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

三、将每一条编写的用例封装:
可以先分类
在类中编写函数
image
写在一个类中
image
image
image
image
image
image
image
image
image
image
image
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")

posted @ 2026-05-18 18:09  刘sir金牌讲师  阅读(8)  评论(0)    收藏  举报