从零搭建 Selenium + Python 的 CRM悟空 自动化测试项目(PO模式 | Windows环境实战)
前言
本文将带大家从零开始,在 Windows 环境 下搭建一个基于 Selenium + Python 的自动化测试框架,并采用 PO(Page Object)模式 来提升可维护性。
一、环境准备
1. 安装 Python
在 Python 官网 下载并安装 Python 3.x。
安装时记得勾选 ✅ Add Python to PATH。
验证是否安装成功:
python --version
pip --version
2. 安装浏览器 & 驱动
本项目使用 Google Chrome。
-
下载对应版本的 ChromeDriver(需和 Chrome 版本一致):
👉 ChromeDriver 下载地址 -
解压后,将
chromedriver.exe放到 Python 安装目录的Scripts文件夹,或添加到系统环境变量PATH中。
验证:
chromedriver --version
3. 安装 Selenium
pip install selenium pytest
4. 编辑器(推荐 PyCharm)
下载 PyCharm Community,方便代码编写与调试。
二、PO 模式简介
PO(Page Object)模式的核心思想是:
-
页面对象类(Page):封装页面元素和操作方法。
-
测试用例类(Test):只调用 Page 提供的方法,不直接操作元素。
优势:
✅ 提高可维护性
✅ 降低重复代码
✅ 测试逻辑与页面操作解耦
三、项目结构设计
在项目根目录 crm_test/ 下建立目录结构:
crm_test/
├── pages/ # 页面对象层
│ ├── base_page.py # 页面基类,封装通用方法
│ ├── login_page.py # 登录页面
│ └── home_page.py # 首页
├── tests/ # 测试用例层
│ └── test_login.py # 登录测试用例
├── utils/ # 工具类(配置、日志)
│ └── config.py
├── conftest.py # pytest 配置(driver 启停)
├── requirements.txt # 依赖文件
四、代码实现
1. pages/base_page.py
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
class BasePage:
def __init__(self, driver):
self.driver = driver
def open(self, url):
self.driver.get(url)
def find(self, locator, timeout=10):
return WebDriverWait(self.driver, timeout).until(
EC.presence_of_element_located(locator)
)
def click(self, locator):
self.find(locator).click()
def input(self, locator, text):
el = self.find(locator)
el.clear()
el.send_keys(text)
2. pages/login_page.py
from selenium.webdriver.common.by import By
from pages.base_page import BasePage
class LoginPage(BasePage):
# 定位符
username_input = (By.NAME, "name") # 用户名输入框
password_input = (By.NAME, "password") # 密码输入框
login_button = (By.CLASS_NAME, "btn") # 登录按钮
def login(self, username, password):
self.input(self.username_input, username)
self.input(self.password_input, password)
self.click(self.login_button)
3. pages/home_page.py
from selenium.webdriver.common.by import By
from pages.base_page import BasePage
class HomePage(BasePage):
user_info = (By.CLASS_NAME, "user-name")
def get_user_info(self):
return self.find(self.user_info).text
4. utils/config.py
BASE_URL = "http://your-crm-wukong-url.com/"
USERNAME = "admin"
PASSWORD = "123456"
5. conftest.py
import pytest
from selenium import webdriver
@pytest.fixture(scope="session")
def driver():
driver = webdriver.Chrome()
driver.maximize_window()
yield driver
driver.quit()
6. tests/test_login.py
import pytest
from pages.login_page import LoginPage
from pages.home_page import HomePage
from utils import config
def test_login(driver):
login_page = LoginPage(driver)
login_page.open(config.BASE_URL)
login_page.login(config.USERNAME, config.PASSWORD)
home_page = HomePage(driver)
assert config.USERNAME in home_page.get_user_info()
五、运行用例
在项目根目录执行:
pytest -s -v
效果:浏览器启动 → 输入账号密码 → 登录 → 断言登录成功。
六、总结
本文分享了如何在 Windows 环境 下,从零开始搭建一个基于 Selenium + Python 的自动化测试框架:
-
配置 Python、Selenium、浏览器驱动
-
使用 PO 模式 封装页面对象
-
编写用例并用 pytest 执行
通过本项目,我们可以快速实现 CRM悟空 的自动化测试,并为后续扩展(如持续集成 CI、日志报告 Allure)打下基础。
👉 后续我会继续写一篇进阶文章,介绍如何将这个框架接入 Allure 报告 + Jenkins,实现自动化测试的持续集成。
更多推荐



所有评论(0)