python selenium 执行多个py类测试用例脚本,使用同一个驱动,避免登录多次。
在自动化项目中 通常会有N个自动化场景,这个场景可能会分别写在不同的py文件中,如果在每个文件中都执行一次启动浏览器的话,会出现启动多个浏览器并且自动化停止
解决思路:
把启动浏览器的这段代码 封装成一个类,然后在不同的自动化py文件中 通过imoprt 引入 然后进行复用.
把驱动封装成一个类
from selenium import webdriver
class DriverUtil:
__webDriver = None
@classmethod
def getWebDriver(cls):
if cls.__webDriver == None:
cls.__webDriver = webdriver.Chrome()
return cls.__webDriver
测试用例直接进行调用
# coding=utf-8
import time
from utils.DriverUtil import DriverUtil
from PageObject.InformationPage import InformationPage
from Method.entryMethod import TestOrder
from Method.examineMethod import TestExamine
from Method.informationMethod import TestPayment
from Method.loginMethod import TestLogin
import unittest
class TestCustomer(unittest.TestCase):
@classmethod
def setUpClass(cls):
print("测试开始了...")
# 驱动设置
cls.driver = DriverUtil.getWebDriver()
# 实例化
cls.information_page = InformationPage(cls.driver)
# 10.部分通过→取消打款
def user_enterOrder_10(self):
TestLogin(self.driver).user_login('woke', '123456', '8888')
time.sleep(1)
self.information_page.type_workOrder()
time.sleep(1)
self.information_page.type_orderList()
time.sleep(1)
TestOrder(self.driver).user_order('200', 'test1', 'monkey1')
time.sleep(1)
TestExamine(self.driver).user_partPass('53057095', '0', '100', '1', '0.5', '鲸鱼', 'test write off success9')
self.information_page.type_orderList()
time.sleep(1)
self.information_page.type_details()
time.sleep(1)
self.information_page.switch_window()
time.sleep(1)
TestPayment(self.driver).user_bank('999', '打款信息2++', '1700')
time.sleep(1)
self.information_page.switch_window()
self.information_page.type_cancel2()
time.sleep(1)
self.information_page.type_confirm2()
time.sleep(1)
self.information_page.switch_window()
time.sleep(1)
# 部分通过→取消打款
def test_enterOrder_10(self):
self.user_enterOrder_10()
# 结束测试
@classmethod
def tearDownClass(cls):
time.sleep(2)
cls.driver.quit() # 退出浏览器
print("测试结束了...")
if __name__ == '__main__':
unittest.main()
@classmethod的作用是 在一个类中 setUpClass、tearDownClass只执行一次
如果你是多个文件一起执行多个自动化场景,就按照上述文件格式即可