| | |
| | | "position":"职员", |
| | | "dept": "人事部" |
| | | } |
| | | }, |
| | | "CIAQ": { |
| | | "menu": "测试包管理/测试包列表", |
| | | "add": { |
| | | "company": "TAI测试", |
| | | "type": "职业兴趣包", |
| | | "product": "CIAQ", |
| | | "hrEmail": "2077506045@qq.com", |
| | | "invalid": "2024-01-01 00:00:00", |
| | | "memberLang": "中文", |
| | | "hrReportLang": "中文", |
| | | "reportTemplate": "CIAQ-Complete-Chinese", |
| | | "memberReportLang": "中文", |
| | | "checkCode": "Dem0015,Dem0014,Dem0013,Dem0012,Dem0011,Dem0010,Dem0009,Dem0008,Dem0007,Dem0006,Dem0005,sex,age", |
| | | "uncheckCode": "dept,position" |
| | | }, |
| | | "info": { |
| | | "email":"3891@8rvf41t.site", |
| | | "sex": "男", |
| | | "age": "24", |
| | | "grade": "大四", |
| | | "address": "湖南省岳阳市", |
| | | "university": "湖南理工大学", |
| | | "universityAddress": "湖南省岳阳市", |
| | | "college": "湖南理工学院新闻传播学院", |
| | | "major": "广告学", |
| | | "subject": "文学", |
| | | "GPA": "3.3/4.0", |
| | | "work": "广告设计", |
| | | "status": "未在寻找实习/工作", |
| | | "workExperience": "无" |
| | | } |
| | | } |
| | | } |
New file |
| | |
| | | from selenium.webdriver.common.by import By |
| | | |
| | | |
| | | class CIAQAnswerElements: |
| | | # 开始测试按钮 |
| | | start_btn = (By.XPATH, "//button/span[text()='开始测试']/..") |
| | | # 题目选项 |
| | | options = (By.XPATH, "//span[@class='q-item-span-content']") |
| | | # 禁用的选项 |
| | | disabled = (By.XPATH, "//label[@aria-disabled='true']") |
| | | # 继续测试按钮 |
| | | continue_testing_btn = (By.XPATH, "//button/span[text()='继续测试']/..") |
| | | # 提交按钮 |
| | | submit_btn = (By.XPATH, "//button/span[contains(text(),'提交')]/..") |
| | | # 上传成功标题 |
| | | upload_success_title = (By.XPATH, "//main/h2[contains(text(), '数据已经成功地上传至服务器')]") |
| | | |
| | | # 加载框文字 |
| | | loading_text = (By.XPATH, "//div[@class='el-loading-spinner']/p") |
| | | |
| | | # 标题文字 |
| | | title = (By.XPATH, "//div[@class='align-center']/span[2]") |
| | | |
| | |
| | | fill_position = (By.XPATH, "//form/div[3]//input") |
| | | # 基本信息-部门 |
| | | fill_dept = (By.XPATH, "//form/div[4]//input") |
| | | |
| | | |
| | | # CIAQ产品包基本信息 |
| | | ciaq_email_input = (By.XPATH, "//form/div[2]//input") |
| | | |
| | | ciaq_sex_select = (By.XPATH, "//form/div[3]//input") |
| | | ciaq_sex_option = (By.XPATH, "//form/div[3]//ul/li[contains(@class,'el-select-dropdown__item')]/span") |
| | | |
| | | ciaq_age_input = (By.XPATH, "//form/div[4]//input") |
| | | |
| | | ciaq_grade_select = (By.XPATH, "//form/div[5]//input") |
| | | ciaq_grade_option = (By.XPATH, "//form/div[5]//ul/li[contains(@class,'el-select-dropdown__item')]/span") |
| | | |
| | | ciaq_address_input = (By.XPATH, "//form/div[6]//input") |
| | | |
| | | ciaq_university_input = (By.XPATH, "//form/div[7]//input") |
| | | |
| | | ciaq_universityAddress_input = (By.XPATH, "//form/div[8]//input") |
| | | |
| | | ciaq_college_input = (By.XPATH, "//form/div[9]//input") |
| | | |
| | | ciaq_major_input = (By.XPATH, "//form/div[10]//input") |
| | | |
| | | ciaq_subject_select = (By.XPATH, "//form/div[11]//input") |
| | | ciaq_subject_option = (By.XPATH, "//form/div[11]//ul/li[contains(@class,'el-select-dropdown__item')]/span") |
| | | |
| | | ciaq_GPA_input = (By.XPATH, "//form/div[12]//input") |
| | | |
| | | ciaq_work_input = (By.XPATH, "//form/div[13]//input") |
| | | |
| | | ciaq_status_select = (By.XPATH, "//form/div[14]//input") |
| | | ciaq_status_option = (By.XPATH, "//form/div[14]//ul/li[contains(@class,'el-select-dropdown__item')]/span") |
| | | |
| | | ciaq_workExperience_select = (By.XPATH, "//form/div[15]//input") |
| | | ciaq_workExperience_option = (By.XPATH, "//form/div[15]//ul/li[contains(@class,'el-select-dropdown__item')]/span") |
| | |
| | | add_memberTemplateLangType_select = (By.XPATH, "//select[@name='memberTemplateLangType']/../button") |
| | | # add-测试者报告语言类型选项 |
| | | add_memberTemplateLangType_option = (By.XPATH, "//select[@name='memberTemplateLangType']/../div/div/ul/li/a/span[2]") |
| | | # 人口学编码选项 |
| | | add_code_checkbox = (By.XPATH, "//label[@class='check-box']") |
| | | # add-确认按钮 |
| | | add_confirm_btn = (By.XPATH, "//iframe[@src='/exam/test_package/add']/../../div[3]/a[1]") |
| | | |
New file |
| | |
| | | import random |
| | | |
| | | from base.base_page import BasePage |
| | | from elements.ciaq_answer_elements import CIAQAnswerElements as Answer |
| | | from selenium.common.exceptions import * |
| | | |
| | | import time |
| | | |
| | | |
| | | class CIAQAnswerPage(BasePage): |
| | | """ |
| | | 答题页面 |
| | | """ |
| | | loading_count = 0 |
| | | |
| | | def answer(self): |
| | | # 暂停3秒 |
| | | time.sleep(3) |
| | | while True: |
| | | # 继续测试按钮出现则点击 |
| | | if self.continue_btn_is_display(): |
| | | self.click(Answer.continue_testing_btn) |
| | | |
| | | # 标题不存在直接返回False |
| | | if not self.title_is_display(): |
| | | if self.continue_btn_is_display(): |
| | | self.click(Answer.continue_testing_btn) |
| | | continue |
| | | return False |
| | | |
| | | try: |
| | | # 获取到所有选项 |
| | | options = self.get_elements(Answer.options) |
| | | number = random.randint(0, len(options)-1) |
| | | if options[number].is_enabled(): |
| | | options[number].click() |
| | | except: |
| | | pass |
| | | |
| | | # 提交按钮存在则点击 |
| | | if self.submit_btn_is_display(): |
| | | self.click(Answer.submit_btn) |
| | | # 数据是否上传完成 |
| | | time.sleep(15) |
| | | if self.upload_is_success(): |
| | | return True |
| | | return False |
| | | |
| | | def upload_is_success(self): |
| | | """ |
| | | 判断数据是否上传完成 |
| | | :return: |
| | | """ |
| | | i = 0 |
| | | while i < 60: |
| | | try: |
| | | self.get_element_wait(Answer.upload_success_title) |
| | | return True |
| | | except TimeoutException: |
| | | i += 1 |
| | | time.sleep(1) |
| | | return False |
| | | |
| | | def submit_btn_is_display(self): |
| | | """ |
| | | 判断提交按钮是否存在 |
| | | :return: |
| | | """ |
| | | try: |
| | | button = self.get_element(Answer.submit_btn) |
| | | if button.is_enabled(): |
| | | return True |
| | | else: |
| | | return False |
| | | except NoSuchElementException: |
| | | return False |
| | | |
| | | def continue_btn_is_display(self): |
| | | """ |
| | | 判断继续测试按钮是否出现 |
| | | :return: bool |
| | | """ |
| | | try: |
| | | # 点击继续测试按钮 |
| | | button = self.get_element(Answer.continue_testing_btn) |
| | | if button.is_enabled(): |
| | | return True |
| | | else: |
| | | return False |
| | | except NoSuchElementException: |
| | | return False |
| | | |
| | | def title_is_display(self): |
| | | """ |
| | | 判断标题是否出现 |
| | | :return: bool |
| | | """ |
| | | try: |
| | | # 获取标题 |
| | | self.get_element_wait(Answer.title) |
| | | return True |
| | | except TimeoutException: |
| | | return False |
| | | |
| | | def loadin_text(self): |
| | | """ |
| | | 判断加载框加载,如果加载超过10秒直接退出当前测试 |
| | | :return: |
| | | """ |
| | | i = 0 |
| | | while i < 10: |
| | | try: |
| | | self.get_element(Answer.loading_text) |
| | | i += 1 |
| | | time.sleep(1) |
| | | except: |
| | | return False |
| | | else: |
| | | return True |
| | | |
| | | def start_btn(self): |
| | | """ |
| | | 开始测试按钮 |
| | | :return: |
| | | """ |
| | | self.click_wait(Answer.start_btn) |
| | |
| | | """ |
| | | 分享链接打开的页面 |
| | | """ |
| | | |
| | | def name_input(self, name): |
| | | """ |
| | | 输入姓名 |
| | |
| | | self.click(Share.submit_btn) |
| | | time.sleep(2) |
| | | |
| | | def fill_info_CIAQ(self, info): |
| | | """ |
| | | CIAQ产品包填写基本信息 |
| | | :param info: |
| | | :return: |
| | | """ |
| | | self.send_text_wait(info["email"], Share.ciaq_email_input) |
| | | self.selector(Share.ciaq_sex_select, Share.ciaq_sex_option, info["sex"]) |
| | | self.send_text_wait(info["age"], Share.ciaq_age_input) |
| | | self.selector(Share.ciaq_grade_select, Share.ciaq_grade_option, info["grade"]) |
| | | self.send_text_wait(info["address"], Share.ciaq_address_input) |
| | | self.send_text_wait(info["university"], Share.ciaq_university_input) |
| | | self.send_text_wait(info["universityAddress"], Share.ciaq_universityAddress_input) |
| | | self.send_text_wait(info["college"], Share.ciaq_college_input) |
| | | self.send_text_wait(info["major"], Share.ciaq_major_input) |
| | | self.selector(Share.ciaq_subject_select, Share.ciaq_subject_option, info["subject"]) |
| | | self.send_text_wait(info["GPA"], Share.ciaq_GPA_input) |
| | | self.send_text_wait(info["work"], Share.ciaq_work_input) |
| | | self.selector(Share.ciaq_status_select, Share.ciaq_status_option, info["status"]) |
| | | self.selector(Share.ciaq_workExperience_select, Share.ciaq_workExperience_option, info["workExperience"]) |
| | | self.click_wait(Share.submit_btn) |
| | | |
| | | def selector(self, select_loc, options_loc, text): |
| | | """ |
| | | 通用选择器,直接调用选择下拉框选项 |
| | | :param select_loc: 点击后出现下拉选项的元素定位 |
| | | :param options_loc: 选项的元素定位 |
| | | :param text: 判断点击的文本 |
| | | :return: |
| | | """ |
| | | # 点击下拉框 |
| | | self.click_wait(select_loc) |
| | | time.sleep(1) |
| | | # 获取所有选项 |
| | | options = self.get_elements_wait(options_loc) |
| | | # 判断选项是否与传入的选项相等 |
| | | for opt in options: |
| | | if opt.text == text: |
| | | # 相等则点击该选项 |
| | | opt.click() |
| | | break |
| | |
| | | opt.click() |
| | | break |
| | | |
| | | def select_code_checkbox(self, check_text, uncheck_text): |
| | | """ |
| | | 选择人口学编码 |
| | | :param uncheck_text: 取消选中的选框文本,以 , 分割 |
| | | :param check_text: 选择的选框文本,以 , 分割 |
| | | :return: |
| | | """ |
| | | # 获取所有人口选编码选框元素 |
| | | code_boxs = self.get_elements_wait(PackageList.add_code_checkbox) |
| | | |
| | | # 将check_text分割 |
| | | code_check_texts = check_text.split(',') |
| | | for code_text in code_check_texts: |
| | | for code_box in code_boxs: |
| | | if code_text == code_box.text: |
| | | code_box.click() |
| | | |
| | | # 将check_text分割 |
| | | code_uncheck_texts = uncheck_text.split(',') |
| | | for code_text in code_uncheck_texts: |
| | | for code_box in code_boxs: |
| | | if code_text == code_box.text: |
| | | code_box.click() |
| | | |
| | | |
| | | |
| | | def add_confirm(self): |
| | | """ |
| | | 点击确认按钮 |
| | |
| | | } |
| | | </script> |
| | | <h1>report.html</h1> |
| | | <p>Report generated on 18-Jul-2023 at 15:23:51 by <a href="https://pypi.python.org/pypi/pytest-html">pytest-html</a> v3.2.0</p> |
| | | <p>Report generated on 18-Jul-2023 at 17:34:03 by <a href="https://pypi.python.org/pypi/pytest-html">pytest-html</a> v3.2.0</p> |
| | | <h2>Summary</h2> |
| | | <p>5 tests ran in 63.57 seconds. </p> |
| | | <p>5 tests ran in 133.54 seconds. </p> |
| | | <p class="filter" hidden="true">(Un)check the boxes to filter the results.</p><input checked="true" class="filter" data-test-result="passed" hidden="true" name="filter_checkbox" onChange="filterTable(this)" type="checkbox"/><span class="passed">5 passed</span>, <input checked="true" class="filter" data-test-result="skipped" disabled="true" hidden="true" name="filter_checkbox" onChange="filterTable(this)" type="checkbox"/><span class="skipped">0 skipped</span>, <input checked="true" class="filter" data-test-result="failed" disabled="true" hidden="true" name="filter_checkbox" onChange="filterTable(this)" type="checkbox"/><span class="failed">0 failed</span>, <input checked="true" class="filter" data-test-result="error" disabled="true" hidden="true" name="filter_checkbox" onChange="filterTable(this)" type="checkbox"/><span class="error">0 errors</span>, <input checked="true" class="filter" data-test-result="xfailed" disabled="true" hidden="true" name="filter_checkbox" onChange="filterTable(this)" type="checkbox"/><span class="xfailed">0 expected failures</span>, <input checked="true" class="filter" data-test-result="xpassed" disabled="true" hidden="true" name="filter_checkbox" onChange="filterTable(this)" type="checkbox"/><span class="xpassed">0 unexpected passes</span> |
| | | <h2>Results</h2> |
| | | <table id="results-table"> |
| | |
| | | <tbody class="passed results-table-row"> |
| | | <tr> |
| | | <td class="col-result">Passed</td> |
| | | <td class="col-name">testcase/test_vaq.py::TestVAQ::test_login[login]</td> |
| | | <td class="col-duration">5.14</td> |
| | | <td class="col-name">testcase/test_ciaq.py::TestCIAQ::test_login[login]</td> |
| | | <td class="col-duration">5.01</td> |
| | | <td class="col-links"></td></tr> |
| | | <tr> |
| | | <td class="extra" colspan="4"> |
| | |
| | | <tbody class="passed results-table-row"> |
| | | <tr> |
| | | <td class="col-result">Passed</td> |
| | | <td class="col-name">testcase/test_vaq.py::TestVAQ::test_create_package[VAQ]</td> |
| | | <td class="col-duration">14.39</td> |
| | | <td class="col-name">testcase/test_ciaq.py::TestCIAQ::test_create_package[CIAQ]</td> |
| | | <td class="col-duration">2.07</td> |
| | | <td class="col-links"></td></tr> |
| | | <tr> |
| | | <td class="extra" colspan="4"> |
| | |
| | | <tbody class="passed results-table-row"> |
| | | <tr> |
| | | <td class="col-result">Passed</td> |
| | | <td class="col-name">testcase/test_vaq.py::TestVAQ::test_open_url[VAQ]</td> |
| | | <td class="col-duration">12.75</td> |
| | | <td class="col-name">testcase/test_ciaq.py::TestCIAQ::test_open_url[CIAQ]</td> |
| | | <td class="col-duration">17.20</td> |
| | | <td class="col-links"></td></tr> |
| | | <tr> |
| | | <td class="extra" colspan="4"> |
| | |
| | | <tbody class="passed results-table-row"> |
| | | <tr> |
| | | <td class="col-result">Passed</td> |
| | | <td class="col-name">testcase/test_vaq.py::TestVAQ::test_answer</td> |
| | | <td class="col-duration">23.80</td> |
| | | <td class="col-name">testcase/test_ciaq.py::TestCIAQ::test_answer</td> |
| | | <td class="col-duration">101.78</td> |
| | | <td class="col-links"></td></tr> |
| | | <tr> |
| | | <td class="extra" colspan="4"> |
| | |
| | | <tbody class="passed results-table-row"> |
| | | <tr> |
| | | <td class="col-result">Passed</td> |
| | | <td class="col-name">testcase/test_vaq.py::TestVAQ::test_delete_package</td> |
| | | <td class="col-duration">7.34</td> |
| | | <td class="col-name">testcase/test_ciaq.py::TestCIAQ::test_delete_package</td> |
| | | <td class="col-duration">7.31</td> |
| | | <td class="col-links"></td></tr> |
| | | <tr> |
| | | <td class="extra" colspan="4"> |
New file |
| | |
| | | from datetime import datetime |
| | | import time |
| | | from selenium.webdriver.common.by import By |
| | | |
| | | import pytest |
| | | from selenium import webdriver |
| | | from po.login_page import LoginPage |
| | | from po.home_page import HomePage |
| | | from po.test_package_list_page import TestPackageListPage |
| | | from po.share_add_page import ShareAddPage |
| | | from po.ciaq_answer_page import CIAQAnswerPage |
| | | from comm.my_random import * |
| | | |
| | | |
| | | class TestCIAQ: |
| | | driver = None |
| | | test_package_name = "CIAQ自动测试包-20230718171809" |
| | | |
| | | @pytest.mark.parametrize('data_read', ["login"], indirect=True) |
| | | def test_login(self, data_read: dict): |
| | | """ |
| | | 打开页面并进行登录测试 |
| | | :param data_read: 执行数据读取的函数并获取到返回值 |
| | | :return: |
| | | """ |
| | | TestCIAQ.driver = webdriver.Chrome() |
| | | driver = TestCIAQ.driver |
| | | login_page = LoginPage(driver) |
| | | try: |
| | | # 打开链接 |
| | | driver.get(data_read["url"]) |
| | | except: |
| | | # 链接打开出现异常说明链接无法访问,捕获异常但不做处理 |
| | | pass |
| | | |
| | | # 浏览器窗口最大化 |
| | | driver.maximize_window() |
| | | # 获取到刷新按钮并每10秒点击一次,知道刷新按钮消失 |
| | | while True: |
| | | try: |
| | | # 判断打开的页面是否存在刷新按钮 |
| | | reload_btn = login_page.get_element((By.XPATH, "//div[@id='buttons']/div/button[@id='reload-button']")) |
| | | # 点击刷新按钮 |
| | | reload_btn.click() |
| | | time.sleep(10) |
| | | except: |
| | | # 出现异常表示不存在刷新按钮 |
| | | # 接着判断是否存在nginx error! |
| | | try: |
| | | nginx_error = login_page.get_element((By.XPATH, "//strong[text() = 'nginx error!']")) |
| | | # 存在则睡眠10秒 |
| | | time.sleep(10) |
| | | except: |
| | | break |
| | | |
| | | login_page.login(data_read["username"], data_read["password"], data_read["code"]) |
| | | time.sleep(2) |
| | | assert login_page.is_login_success() |
| | | |
| | | @pytest.mark.parametrize('data_read', ["CIAQ"], indirect=True) |
| | | def test_create_package(self, data_read: dict): |
| | | """ |
| | | 创建测试包 |
| | | :param data_read: 读取数据 |
| | | :return: |
| | | """ |
| | | # 获取driver |
| | | driver = TestCIAQ.driver |
| | | # 创建home页面的对象 |
| | | home_page = HomePage(driver) |
| | | # 点击左侧菜单进入页面 |
| | | home_page.menu_select(data_read["menu"]) |
| | | # # 创建测试包列表页面的对象 |
| | | # test_package_list = TestPackageListPage(driver) |
| | | # # 点击创建按钮 |
| | | # test_package_list.create_btn() |
| | | # # 获取当前时间 |
| | | # current_time = datetime.now() |
| | | # # 转换为字符串 |
| | | # time_str = current_time.strftime("%Y%m%d%H%M%S") |
| | | # # 创建测试包填写的参数 |
| | | # # 测试包名称 |
| | | # test_package_name = "CIAQ自动测试包-" + time_str |
| | | # # 设置测试包名称为类变量 |
| | | # TestCIAQ.test_package_name = test_package_name |
| | | # # 获取创建测试包的数据 |
| | | # create_data = data_read["add"] |
| | | # # 填写测试包名称 |
| | | # test_package_list.testPackageName_input(test_package_name) |
| | | # # 填写报告企业名称 |
| | | # test_package_list.reportCompanyName_input(create_data["company"]) |
| | | # # 选择测试包类型 |
| | | # test_package_list.testPackageType_select(create_data["type"]) |
| | | # # 选择产品包 |
| | | # test_package_list.prodTree_select(create_data["product"]) |
| | | # # 输入hr邮箱 |
| | | # test_package_list.hrReportEmail_input(create_data["hrEmail"]) |
| | | # # 输入有效期 |
| | | # test_package_list.invalidTime_input(create_data["invalid"]) |
| | | # # 选择邀请邮件语言类型 |
| | | # test_package_list.testTemplateLangType_select(create_data["memberLang"]) |
| | | # # 选择HR邮件语言类型 |
| | | # test_package_list.hrTemplateLangType_select(create_data["hrReportLang"]) |
| | | # # 选择报告模板 |
| | | # test_package_list.reportTemplate_select(create_data["reportTemplate"]) |
| | | # # 点击测试者接收报告 |
| | | # test_package_list.autoSendReport_checkbox() |
| | | # # 选择测试者报告邮箱语言类型 |
| | | # test_package_list.memberReportLangType_select(create_data["memberReportLang"]) |
| | | # |
| | | # # 选择人口学编码 |
| | | # test_package_list.select_code_checkbox(create_data["checkCode"], create_data["uncheckCode"]) |
| | | # |
| | | # # 点击确认按钮 |
| | | # test_package_list.add_confirm() |
| | | # time.sleep(2) |
| | | # # 判断是否成功创建 |
| | | # assert test_package_list.is_create_success(test_package_name) |
| | | # time.sleep(5) |
| | | |
| | | @pytest.mark.parametrize('data_read', ["CIAQ"], indirect=True) |
| | | def test_open_url(self, data_read: dict): |
| | | """ |
| | | 打开分享链接 |
| | | :return: |
| | | """ |
| | | # 获取driver |
| | | driver = TestCIAQ.driver |
| | | # 创建测试包列表页面的对象 |
| | | test_package_list = TestPackageListPage(driver) |
| | | # 勾选新创建的测试包 |
| | | test_package_list.click_package_checkbox(TestCIAQ.test_package_name) |
| | | # 点击生成分享链接按钮 |
| | | test_package_list.click_share_1_btn() |
| | | # 获取到url |
| | | url = test_package_list.get_share_url() |
| | | # 打开新标签页加载url |
| | | test_package_list.open_new_table_to_url(url) |
| | | # 创建分享页面对象 |
| | | share_add = ShareAddPage(driver) |
| | | # 填写信息提交并获取测试链接 |
| | | name = random_string(8) |
| | | email = name + "@gmail.com" |
| | | test_url = share_add.page_default_operation(name, email) |
| | | # 当前页面打开链接 |
| | | driver.get(test_url) |
| | | # 点击提交按钮 |
| | | share_add.submit_btn() |
| | | # 获取数据 |
| | | info = data_read["info"] |
| | | # 填写基本信息并提交 |
| | | share_add.fill_info_CIAQ(info) |
| | | time.sleep(5) |
| | | |
| | | def test_answer(self): |
| | | # 获取driver |
| | | driver = TestCIAQ.driver |
| | | # 创建answer对象 |
| | | answer_page = CIAQAnswerPage(driver) |
| | | # 点击开始测试 |
| | | answer_page.start_btn() |
| | | # 开始答题 |
| | | flag = answer_page.answer() |
| | | # 答完题关闭当前标签页 |
| | | driver.close() |
| | | # 切换到第一个标签页 |
| | | answer_page.switch_window(0) |
| | | if flag is not None or not flag: |
| | | assert flag |
| | | return |
| | | |
| | | def test_delete_package(self): |
| | | # 获取driver |
| | | driver = TestCIAQ.driver |
| | | # 创建测试包列表页面的对象 |
| | | test_package_list = TestPackageListPage(driver) |
| | | # 删除测试包 |
| | | test_package_list.delete_package() |
| | | time.sleep(5) |
| | | # 关闭 |
| | | driver.quit() |
| | | |
| | | |
| | | if __name__ == '__main__': |
| | | pytest.main(["-s", __file__]) |