在ui自动化中,如果有多个case在不同的class 下,要全部执行并且要求只启动一次浏览器页面,怎么处理?
思路通过继承实现
测试场景:
1.正确访问页面
2.错误访问页面-重定向至预设页面
3.正确登录
。。。
第一步:
【open.py】
#coding-utf-8
import unittest
from selenium import webdriver
'''
设置全局配置,其他case继承使用
'''
class TestOpen(unittest.TestCase):
# wb = webdriver.Chrome()#全局
#屏蔽chrome消息提醒
wb = webdriver.ChromeOptions()
prefs = {
'profile.default_content_setting_values':
{
'notifications': 2
}
}
wb.add_experimental_option('prefs', prefs)
wb = webdriver.Chrome(chrome_options=wb)
@classmethod #执行一次,页面只启动一次
def setUpClass(self, driver=wb):
self.driver = driver
self.driver.get("https://www.xxx/login")
self.driver.maximize_window()
self.driver.implicitly_wait(15)
# def tearDownClass(self, driver=dr) -> None:
# self.driver = driver.quit()
#
第二步:
【login.py】
#coding=utf-8
from selenium.webdriver.common.by import By
import time, unittest
import open
# 继承open.TestOpen 【文件名+类方法】
class TestLogin(open.TestOpen):
@classmethod #执行一次
def test_login(self):
'''正确登录'''
self.driver.find_element(By.ID, "userEmail").send_keys("com")
self.driver.find_element(By.ID, "userPassword").send_keys("123")
self.driver.find_element(By.CLASS_NAME, "reg_submit").click()
self.driver.find_element(By.CLASS_NAME, "admin-tips").click()
time.sleep(4)
if __name__ == '__main__':
unittest.main()
【以此类推】
说明:由于每一次的继承会重复之前的步骤,可以用@classmethod装饰器进线弥补
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
2019-12-30 性能分析指标