当前位置: 首页 > news >正文

肇庆网站建设方案维护百度电脑版下载官网

肇庆网站建设方案维护,百度电脑版下载官网,分销,广州网站建设 推广公司哪家好Page Object模式简介 核心思想 将页面元素和操作行为封装在独立的类中#xff0c;形成页面对象#xff08;Page Object#xff09;。每个页面对象代表应用程序中的一个特定页面或组件。 优点#xff1a; 代码复用性高 页面对象可以在多个测试用例中复用。 易于维护 …Page Object模式简介 核心思想 将页面元素和操作行为封装在独立的类中形成页面对象Page Object。每个页面对象代表应用程序中的一个特定页面或组件。 优点 代码复用性高 页面对象可以在多个测试用例中复用。 易于维护 如果页面布局或元素发生变化只需要修改对应的页面对象类而不需要修改所有相关的测试用例。 项目结构介绍 allure-results/: 作用: 存放 Allure 生成的测试结果文件。Allure 从这里读取数据来生成报告。 内容示例: 包含测试结果的 JSON 文件、截图等附件。 pages/ 作用存放Page Object类。Page Object类将页面元素及其操作封装起来每个类对应一个页面或组件。这种封装使得测试代码更为简洁易读并减少了页面变更时的修改量。 示例 base_page.py: 定义了一个基础的Page类提供了页面操作的通用方法如查找元素、点击、输入文本等。其他页面类都会继承这个类。 import allure from selenium.common import TimeoutException from selenium.webdriver.remote.webdriver import WebDriver from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as ECclass BasePage:def __init__(self, driver: WebDriver):self.driver driverself.timeout 5def find_element(self, locator):获取元素的手柄:param locator:指定元素的定位器:return:元素手柄# presence_of_element_located等待某个元素出现在 DOM 中# visibility_of_element_located等待某个元素不仅存在于 DOM 中而且是可见的。try:# 尝试等待元素的可见性return WebDriverWait(self.driver, self.timeout).until(EC.visibility_of_element_located(locator))except TimeoutException:# 如果元素的可见性等待超时继续等待元素的存在return WebDriverWait(self.driver, self.timeout).until(EC.presence_of_element_located(locator))def element_exists(self, locator):用显示等待判断指定元素是否存在:param locator:待判断元素的定位器:return:True/Falsetry:self.find_element(locator)return Trueexcept TimeoutException:return Falsedef upload_file(self, file_path, locator):公共的上传文件函数:param file_path (str)要上传的文件的路径:param locator (tuple)上传元素的定位器:return: 无with allure.step(f上传文件{file_path}):upload_element self.find_element(locator)upload_element.send_keys(file_path)def get_text(self, locator):text_content self.find_element(locator).textreturn text_contentdef click(self, locator):点击指定的元素:param locator: 指定元素的定位器:return:with allure.step(f点击指定元素{locator}):self.find_element(locator).click()def double_click(self, locator):点击指定的元素:param locator: 指定元素的定位器:return:with allure.step(f双击指定元素{locator}):self.find_element(locator).double_click()def context_click(self, locator):右键指定的元素:param locator: 指定元素的定位器:return:with allure.step(f右键指定元素{locator}):self.find_element(locator).context_click()def send_keys(self, locator, text):收入数据:param locator: 指定元素的定位器:param text: 待输入的数据:return:with allure.step(f在{locator}中输入{text}):self.find_element(locator).send_keys(text)def get_title(self):获取当前页面表头:return:return self.driver.title baidu_page.py: 这个文件是一个具体的Page Object类的示例封装了登录页面的操作。通常会包含元素定位和一些基本的操作方法如输入输入、点击搜索按钮等。 import time import allure from selenium.webdriver.common.by import By from .base_page import BasePageclass LoginPage(BasePage):# 元素element# 定位器positionerep_INPUT (By.XPATH, //*[idkw])ep_SEARCH_BUTTON (By.XPATH, //*[idsu])ep_ASSERT_TEXT (By.XPATH, //*[id1]/div/section/div[1]/span)ep_INPUT_IMAGE (By.XPATH, //*[idform]/span[1]/span[1])ep_SELECT_FILE (By.XPATH, //*[idform]/div/div[2]/div[2]/input)ep_IMAGE_PATH D:\\UITestProject\\20240815175707543.jpgep_ASSERT_IMAGE (By.XPATH, //*[idapp]/div/div[1]/div/div[1]/div/div/div[2]/div[1])# allure.step(输入搜素text) # 用于记录测试用例中的具体步骤def input_value(self, value):输入搜索值:param value::return:self.send_keys(self.ep_INPUT, value)# allure.step(点击搜索按钮) # 用于记录测试用例中的具体步骤def click_search(self):点击搜索按钮:return:self.click(self.ep_SEARCH_BUTTON)# allure.step(获取判断元素的text)def get_assert_text_text(self):return self.get_text(self.ep_ASSERT_TEXT)# allure.step(上传图片) # 用于记录测试用例中的具体步骤def upload_image(self):self.click(self.ep_INPUT_IMAGE)self.upload_file(self.ep_IMAGE_PATH, self.ep_SELECT_FILE)def get_assert_image_text(self):print(self.get_text(self.ep_ASSERT_IMAGE))return self.get_text(self.ep_ASSERT_IMAGE) tests/: 作用: 存放所有的测试用例文件。每个测试文件通常以 test_ 开头包含测试函数和测试类。 示例: test_baidu.py包含针对百度功能的测试用例。 import allure import pytest from pages.baidu_page import LoginPage# pytest.mark.usefixtures(setup) # 在测试用例之前和之后执行 allure.feature(百度搜索功能) class TestLogin:# pytest.mark.skip(reason跳过该测试用例) # 跳过该测试用例# pytest.mark.skipif(sys.platform win32, reasonWindows上不运行该用例) # 根据条件判断是否跳过该测试用例# pytest.mark.run(order1) # 控制运行顺序【优先级】从小到大依次执行allure.title(搜索文本功能) # 用于给测试用例设置一个自定义的标题替代默认的函数名称。pytest.mark.parametrize(value, text, [(猪猪, 其他人还搜), (狗子, 相关动物)]) # 参数化def test_search_text(self, value, text):login_page LoginPage(self.driver)login_page.input_value(value)login_page.click_search()assert login_page.get_assert_text_text() textassert login_page.get_title() f{value}_百度搜索allure.title(搜索图片功能) # 用于给测试用例设置一个自定义的标题替代默认的函数名称。allure.description(测试是否可以搜索出与上传图片有关的内容) # 为测试用例添加详细描述帮助更好地理解测试的目的和背景。def test_search_image(self):login_page LoginPage(self.driver)login_page.upload_image()assert login_page.get_assert_image_text() 文字提取 utils/: 作用作用: 存放工具类和辅助功能的脚本。通常包括 WebDriver 的工厂类、常用的功能函数等。示例 driver_factory.py创建和管理 WebDriver 实例的工厂类。 from selenium import webdriverdef get_driver(browser_namechrome):# 判断启动的浏览器不区分大小写if browser_name.lower() chrome:options webdriver.ChromeOptions()# 添加启动时最大化窗口的参数options.add_argument(--start-maximized)return webdriver.Chrome(optionsoptions)elif browser_name.lower() firefox:options webdriver.FirefoxOptions()options.add_argument(--start-maximized)return webdriver.Firefox(optionsoptions)elif browser_name.lower() edge:options webdriver.EdgeOptions()options.add_argument(--start-maximized)return webdriver.Edge(optionsoptions)else:raise ValueError(f不支持该浏览器: {browser_name}) conftest.py: 作用用于设置和清理测试环境、初始化 WebDriver 实例等。 import allure import pytest from utils.driver_factory import get_driver# 在每个测试类之前执行一次,需要手动添加注解后才能生效 pytest.fixture(scopeclass) def setup(request):# 使用 get_driver 函数创建一个 WebDriver可以根据需求修改浏览器类型# driver get_driver(browser_namechrome)driver get_driver(browser_nameedge)# 将创建的 WebDriver 实例赋值给测试类以便测试用例可以使用request.cls.driver driver# yield 语句之前的代码是测试前置条件yield 之后的代码是测试后置条件yielddriver.quit()# 在每个测试用例之前执行一次不需要额外给测试用例添加注解 pytest.fixture(autouseTrue) def test_case_setup(request):# 将创建的 WebDriver 实例赋值给测试类以便测试用例可以使用driver get_driver(browser_namechrome)request.cls.driver driver# 打开指定链接driver.get(https://www.baidu.com)# yield 语句之前的代码是测试前置条件yield 之后的代码是测试后置条件yield# 在测试用例执行完毕后关闭浏览器并退出 WebDriverdriver.close()# 生成测试报告的钩子函数 pytest.hookimpl(tryfirstTrue, hookwrapperTrue) def pytest_runtest_makereport(item, call):# 先执行测试outcome yieldreport outcome.get_result()# 如果测试失败并且是一个 call 状态表示实际运行测试代码时出错# if report.when call and report.failed:# 测试通过或不通过都截图if report.when call:# 通过 request 对象获取 driver 实例driver item.funcargs[request].cls.driver# 截图并附加到 Allure 报告中try:allure.attach(driver.get_screenshot_as_png(),name测试结果截图,attachment_typeallure.attachment_type.PNG)except Exception as e:# 将错误日志作为附件添加到 Allure 报告中allure.attach(f截图失败: {e},name截图失败日志,attachment_typeallure.attachment_type.TEXT) pytest.ini: 作用: 配置 pytest 的行为包括指定测试目录、文件名模式、标记等。 [pytest] # --continue-on-collection-errors 测试用例报错后仍然继续运行 # --alluredir./allure-results指定生成的测试数据存储的位置 addopts --continue-on-collection-errors --alluredir./allure-results# 指定 pytest 搜索测试用例的根目录 # 所有测试文件和目录都会在 tests 目录下被自动发现和执行 testpaths tests # 指定测试文件的命名模式 # pytest 只会识别文件名以 test_ 开头的 Python 文件作为测试文件 python_files test_*.py# 指定测试类的命名模式 # pytest 只会识别以 Test 开头的类名作为测试类 python_classes Test*# 指定测试函数的命名模式 # pytest 只会识别以 test_ 开头的函数名作为测试函数 python_functions test_* requirements.txt 作用当前项目中所使用到的第三方库 allure-pytest2.13.5 allure-python-commons2.13.5 attrs24.2.0 certifi2024.7.4 cffi1.17.0 colorama0.4.6 exceptiongroup1.2.2 h110.14.0 idna3.7 iniconfig2.0.0 outcome1.3.0.post0 packaging24.1 pluggy1.5.0 pycparser2.22 PySocks1.7.1 pytest8.3.2 selenium4.23.1 sniffio1.3.1 sortedcontainers2.4.0 tomli2.0.1 trio0.26.2 trio-websocket0.11.1 typing_extensions4.12.2 urllib32.2.2 websocket-client1.8.0 wsproto1.2.0 运行 运行测试: pytest查看Allure测试报告 allure serve allure-results测试报告示例
http://www.hkea.cn/news/14509879/

相关文章:

  • 铁岭做网站包括哪些太原做网站需要多少钱
  • 自己做的网站会被黑吗wordpress婚庆主题
  • 网站备案管理系统一般网站建设需求有哪些
  • 天津网站建设 阿土伯5个不好的网站
  • 什么样的网站利于百度优化怎么在网上卖东西视频
  • 做哪些网站不受法律保护网页版游戏排行榜田田田田田田田田
  • 域名转出过程网站能打开吗2023年8月新闻热点事件
  • 360建站公司苏州 网站建设 app
  • 公司请人做的网站 域名属于谁网站建设公司郴州
  • .la域名做的网站行业数据可以从哪里获取
  • 如何架设php网站杭州企业推广网站
  • 北京专业建设网站价格网站建设咨询加工
  • 咸阳市城乡建设规划局网站免费的微网站哪个好
  • 网站建设公司问答营销案例电子商务网站建设及维护管理
  • 番禺做网站价格长春网站建设哪家好
  • 多用户商城网站建设二次开发临沂画册设计公司
  • 农林科技公司网站模板东莞seo建站咨询
  • 核工业华南建设集团网站HTML建网站
  • 邢台网站制作那家便宜应用商店app下载安装
  • 湖南建网站公司监察部门网站建设方案
  • 找人建设一个网站大概需要多少费用中国纪检监察报范耀庚
  • 网站建设 调研报告六安今天新闻最新消息
  • 分布式网站架构房屋建筑学课程设计图纸
  • 自己做的网站在百度怎么发布广告联盟有哪些平台
  • 咸宁网站设计公司专业做网站 郑州
  • WordPress批量定时发布文章成都企业网站优化服务
  • 微信商城网站如何做wordpress ip改成域名
  • 长春教做网站带维护的培训机构企业营销型网站建设价格
  • 信誉好的丹阳网站建设上海企业登记在线
  • 如手机网站源码wordpress云音乐插件下载