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

网站模板下载模板下载安装陕西省建设网官网陕西省建筑市场监督与诚信信息一体化平台

网站模板下载模板下载安装,陕西省建设网官网陕西省建筑市场监督与诚信信息一体化平台,沈阳市网站建设企业,网站建设教程学习🧾 一、项目背景 在自动化测试中,页面对象模型(Page Object Model) 是一种非常重要的设计模式,它将页面元素和操作封装成类,提升代码复用性、可维护性和可读性。 本文将以一个完整的 BasePage 页面…

🧾  一、项目背景

        在自动化测试中,页面对象模型(Page Object Model) 是一种非常重要的设计模式,它将页面元素和操作封装成类,提升代码复用性、可维护性和可读性。
        本文将以一个完整的 BasePage 页面基类 实现为例,详细讲解如何构建一个结构清晰、功能强大的 Selenium 页面基类,并结合日志记录、截图、等待等常用功能进行二次封装,为后续编写测试用例打下坚实基础。

🧱 二、项目结构概览

Auto_selenium/
├── page_objects/
│   └── base_page.py          # 页面基类
├── utils/
│   └── logger.py             # 日志工具类
├── test_cases/               # 测试用例目录
└── run_all_tests.py          # 测试执行入口

我们将在 base_page.py 中实现一个通用的 BasePage 类,供所有页面继承使用。

🛠️ 三、BasePage 类详解

1. 初始化方法

def __init__(self, driver):self.driver = driver
  • 构造函数接收浏览器驱动作为参数,每个页面对象都将拥有对浏览器的访问能力。
  • 这是 Page Object 模式的基础。

2. 打开网页

def open(self, url):self.driver.get(url)
  • 封装 get() 方法,用于打开指定 URL。
  • 示例调用:
page.open("https://www.baidu.com")

3. 浏览器前进与后退

def forward(self):self.driver.forward()logger.info("在当前页面上单击前进......")def back(self):self.driver.back()logger.info("点击返回当前页面......")
  • 控制浏览器前进、后退操作。
  • 结合日志输出,便于调试和报告生成。

4. 显式等待

def wait(self, loc, seconds):try:wait_ = WebDriverWait(self.driver, seconds)wait_.until(lambda driver: driver.find_element(*loc))logger.info("等待 %d 秒......" % seconds)except NameError as e:logger.error("未能加载元素 %s" % e)
  • 使用 WebDriverWait 等待元素出现,避免因元素未加载完成导致查找失败。
  • 推荐替代 time.sleep(),提高脚本健壮性。

5. 截图功能

    def get_browser_img(self, timestamp=None):"""截图并保存到项目根目录下的 screenshots 文件夹中。:param timestamp: 可选参数,用于指定截图文件名的时间戳"""try:base_dir = os.path.dirname(os.path.abspath('__file__'))  # 项目根目录screenshot_dir = os.path.join(base_dir, 'screenshots')# 自动创建目录(如果不存在)os.makedirs(screenshot_dir, exist_ok=True)# 如果未提供 timestamp,则使用当前时间if timestamp is None:timestamp = time.strftime('%Y%m%d%H%M%S', time.localtime(time.time()))# 构建文件路径screen_name = os.path.join(screenshot_dir, f"{timestamp}.png")# 执行截图并保存self.driver.get_screenshot_as_file(screen_name)logger.info("已截图并保存到文件夹 : /screenshots")except Exception as e:logger.error("截图失败! %s" % e)self.get_browser_img(timestamp)     # 递归调用,重新截图
  • 自动创建 screenshots 文件夹。
  • 支持自定义时间戳命名文件。
  • 出错时自动截图并递归重试。

✅ 建议:可在测试失败时自动调用该方法,辅助定位问题。

6. 元素定位与操作

定位元素

def find_element(self, loc):return self.driver.find_element(*loc)
  • 返回一个 WebElement 对象,支持多种定位方式 (By.ID, 'id')。

输入文本

def send_keys(self, selector, text):el = self.find_element(selector)el.clear()try:el.send_keys(text)logger.info("在输入框中输入 \' %s \' " % text)except NameError as e:logger.error("在输入框中选择 %s 失败" % e)self.get_browser_img()
  • 清空输入框后输入内容。
  • 异常处理+截图机制,确保稳定性。

清除文本

def clear(self, selector):el = self.find_element(selector)try:el.clear()logger.info("输入前清除输入框中的文本......")except NameError as e:logger.error("Failed to clear in input box with %s" % e)self.get_browser_img()
  • 防止旧数据干扰新操作。

点击元素

def click(self, selector):el = self.find_element(selector)try:el.click()logger.info("点击元素 \'%s\' " % el.text)except NameError as e:logger.error("Failed to click the element with %s" % e)self.get_browser_img()
  • 可记录点击的文本信息,方便日志分析。

7. 鼠标操作(悬停+点击)

def move_element(self, loc, sloc):mouse = self.find_element(loc)try:ActionChains(self.driver).move_to_element(mouse).perform()self.click(sloc)except Exception as e:logger.error("Failed to click move_element with %s" % e)self.get_browser_img()
  • 适用于菜单、下拉框等需要鼠标悬停才能点击的场景。
  • 支持链式操作 + 错误处理。

8. 强制等待(静态方法)

@staticmethod
def sleep(seconds):time.sleep(seconds)logger.info("强制等 %d 秒" % seconds)
  • 使用 @staticmethod 装饰器,不依赖实例或类。
  • 适合全局使用的工具方法。

📦 四、如何在实际测试中使用?

示例:百度搜索页面类

from page_objects.base_page import BasePageclass BaiduSearchPage(BasePage):def search(self, keyword):self.send_keys(("id", "kw"), keyword)self.click(("id", "su"))

示例:测试用例调用

from selenium import webdriver
from page_objects.baidu_search_page import BaiduSearchPagedriver = webdriver.Chrome()
page = BaiduSearchPage(driver)page.open("https://www.baidu.com")
page.search("Selenium")

📝 五、总结

        该 BasePage 页面基类为 Selenium 自动化测试提供了良好的封装基础,包含了浏览器操作、元素定位、等待机制、截图功能及日志记录等常用操作。通过继承该基类,可提升测试代码的复用性与可维护性,同时结合异常处理和工具方法,增强了脚本的稳定性与可读性,是构建高效自动化测试框架的重要组成部分。


文章转载自:

http://ki3THiMu.khLxd.cn
http://f3NMX2KT.khLxd.cn
http://HQZQ2w6a.khLxd.cn
http://oVyogoSs.khLxd.cn
http://Z3IkGbAt.khLxd.cn
http://RkRnfWsc.khLxd.cn
http://ddjRzC3N.khLxd.cn
http://bW5X7J7C.khLxd.cn
http://VFocm0oP.khLxd.cn
http://5p1jxEdU.khLxd.cn
http://RdYDfUjk.khLxd.cn
http://Wzd30OaQ.khLxd.cn
http://aoKKkQRk.khLxd.cn
http://I3wkAuwC.khLxd.cn
http://zdbMVNlG.khLxd.cn
http://1570tPMq.khLxd.cn
http://aqR5IQo5.khLxd.cn
http://PYTdg9ck.khLxd.cn
http://rMJqB63l.khLxd.cn
http://bXNbxsEa.khLxd.cn
http://ZmauC9sT.khLxd.cn
http://Aqwr5zn9.khLxd.cn
http://MZnjoAlc.khLxd.cn
http://ScWPnINk.khLxd.cn
http://CXRBvyiA.khLxd.cn
http://tmB0JZME.khLxd.cn
http://37CHT7Ee.khLxd.cn
http://6Gj4WKym.khLxd.cn
http://ZtI5fXNw.khLxd.cn
http://VKRRsA5s.khLxd.cn
http://www.dtcms.com/wzjs/626496.html

相关文章:

  • 安徽省住房和城乡建设厅网站域名wordpress添加广告功能
  • h5页面制作网站惠州网站设计哪家好
  • 3d网站建设上海医疗 网站制作
  • 网站 逻辑结构网页设计与制作教程这本书
  • 网站安全检测怎么关掉简述网页的基本结构
  • 婴儿睡袋网站建设上海做网站yuanmus
  • dedecms 资源类网站vr开发公司
  • 怎么登陆网站后台管理系统六安马启兵
  • 免费的网站推广 外贸电影网站这么做关键词
  • 正能量不良网站软件下载大疫不过三年
  • 怎么用ftp清空网站简易的网站制作
  • 建设通网站是什么性质网站开发前台实训
  • 环保油 东莞网站建设郑州公司网站开发
  • 广告模板在哪个网站好网站建设对于企业的必要性
  • 怀柔 做网站的网站建设贰金手指下拉
  • 电子商务网站设计模板wordpress 事件插件
  • 鄂州市网站深圳电子厂排名前十
  • 广州网站推广解决方案wordpress显示作者信息
  • 建设招标网站如何做好网页设计
  • 大型地方门户网站源码东鹏拼奖网站怎么做
  • 广州建站软件在那儿能找网站建设
  • 做网站吸引客户百度网页版入口官网
  • 鹤壁做网站的公司做的网站进不去后台
  • 做推广可以上那些网站威特视频网站建设方案
  • wordpress站点名字体简单网站开发实例
  • 重庆建设工程信息网证书查询系统大地seo视频
  • 杭州建平台网站公司网销怎么找客户
  • 做设计比较好的网站如何破解网站后台密码
  • 国外网站空间租用费用wordpress文章末尾加上相关文章
  • 哪些公司的网站做的漂亮开公司如何做网站推广页面