Bootstrap

打造测试工程师的终极利器:一键爬取页面元素生成 PO 模式对象,全流程自动化

前言

测试工程师在自动化测试中常常遇到以下难题:

  1. 页面复杂,元素难以定位:面对复杂的页面结构,手动编写元素定位代码既耗时又容易出错。
  2. 重复劳动:每次新增页面或调整页面布局时,都需要重新手动创建 Page Object,对测试效率造成极大影响。
  3. 适配复杂场景:面对需要鉴权的页面(如登录后才能访问的页面),如何高效获取页面元素成为一大挑战。

如果有一个工具,能够一键爬取页面所有元素,自动生成符合 Page Object 设计模式的 Python 文件,并支持复杂场景(如鉴权)和自定义扩展,是不是可以彻底解放测试工程师?

本文将为你展示如何构建这样的工具,利用 Python 爬虫 提取页面元素,并结合 Ollama 本地部署的 DeepSeek 模型 提高元素定位的准确性,自动生成符合 PO 模式的代码文件。无论页面结构有多复杂,这个工具都能轻松胜任,同时保证代码清晰、易扩展,适合 Python 基础较弱的测试工程师使用。


工具功能概述

  1. 页面元素提取

    • 爬取 HTML 页面,提取所有常见控件(如按钮、输入框、下拉列表等)。
    • 根据属性优先级(如 idnameclass)生成准确的定位代码。
  2. 支持鉴权处理

    • 对于需要登录的页面,支持通过请求头添加鉴权信息(如 Authorization Token)完成页面爬取。
  3. 自动生成 PO 对象

    • 按照 Page Object 设计模式,生成 Python 文件,分层管理页面对象及其操作方法。
  4. 接入 DeepSeek 提高定位准确性

    • 利用 DeepSeek 模型对提取的元素进行分类和优化,确保生成的代码更智能、更准确。
  5. 支持复杂页面与扩展

    • 针对复杂页面结构(如动态加载元素),提供可扩展的通用解决方案。

工具实现

1. 依赖安装

在编写代码前,请确保安装以下依赖库:

pip install requests beautifulsoup4 playwright jinja2

2. 页面元素提取代码

以下代码演示如何爬取页面 HTML 并提取所有常见控件(如按钮、输入框等),支持基于属性优先级生成准确的定位代码。

from bs4 import BeautifulSoup
import requests

def extract_page_elements(url, headers=None):
    """
    爬取页面并提取常见控件信息
    :param url: 页面 URL
    :param headers: 请求头(支持鉴权)
    :return: 页面控件信息字典
    """
    # 发起 HTTP 请求
    response = requests.get(url, headers=headers)
    if response.status_code != 200:
        raise Exception(f"Failed to fetch page: {
     response.status_code}")
    
    # 使用 BeautifulSoup 解析 HTML
    soup = BeautifulSoup(response.text, "html.parser")

    elements = []

    # 提取按钮
    for button in soup.find_all("button"):
        elements.append({
   
            "tag": "button",
            "id": button.get("id"),
            "name": button.get("name"),
            "class"<
;