zoukankan      html  css  js  c++  java
  • 在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装饰器进线弥补

  • 相关阅读:
    函数及习题
    数组和集合
    数组和集合实例
    普通集合和泛型集合的区别,哈希表和字典表的区别,队列和堆栈的区别以及堆和栈的区别。
    c#时间表示
    c#正则表达式
    js正则实例
    习题实例
    c#数据类型
    简单控件
  • 原文地址:https://www.cnblogs.com/yanhuidj/p/14213433.html
Copyright © 2011-2022 走看看