Selenium 和 PyAutoGUI 实现UI自动化测试

阶段一:环境准备与基础操作

1.1 安装工具库

bash 复制代码
# 安装Selenium(用于Web自动化)
pip install selenium

# 安装PyAutoGUI(用于桌面应用自动化)
pip install pyautogui

1.2 浏览器驱动下载

  • 下载对应浏览器版本的驱动(如ChromeDriver)
  • 将驱动文件放在Python安装目录或系统PATH路径中

阶段二:Selenium基础操作

2.1 启动浏览器并打开网页

python 复制代码
from selenium import webdriver
from selenium.webdriver.common.by import By

# 启动Chrome浏览器
driver = webdriver.Chrome()

# 打开网页
driver.get("https://www.baidu.com")

# 关闭浏览器
driver.quit()

2.2 元素定位与操作

python 复制代码
# 通过ID定位搜索框并输入内容
search_box = driver.find_element(By.ID, "kw")
search_box.send_keys("Python自动化测试")

# 通过NAME定位搜索按钮并点击
search_button = driver.find_element(By.NAME, "wd")
search_button.click()

# 通过XPath定位元素
element = driver.find_element(By.XPATH, "//input[@class='s_ipt']")

阶段三:进阶操作

3.1 处理弹窗和窗口切换

python 复制代码
# 切换到弹窗
alert = driver.switch_to.alert
alert.accept()  # 确认弹窗

# 切换窗口
for handle in driver.window_handles:
    driver.switch_to.window(handle)

3.2 显式等待(解决元素加载问题)

python 复制代码
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 等待元素出现(最多10秒)
element = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.ID, "element_id"))
)

阶段四:实际案例 - 电商网站自动化测试

4.1 模拟登录流程

python 复制代码
def test_login():
    driver.get("https://www.example.com/login")
    driver.find_element(By.ID, "username").send_keys("test_user")
    driver.find_element(By.ID, "password").send_keys("password123")
    driver.find_element(By.XPATH, "//button[text()='登录']").click()
    assert "我的账户" in driver.title

4.2 模拟购物流程

python 复制代码
def test_shopping():
    # 搜索商品
    driver.find_element(By.NAME, "q").send_keys("手机")
    driver.find_element(By.CLASS_NAME, "search-btn").click()
    
    # 添加第一个商品到购物车
    driver.find_element(By.XPATH, "(//a[contains(text(),'加入购物车')])[1]").click()
    
    # 进入购物车结算
    driver.find_element(By.LINK_TEXT, "去结算").click()
    assert "订单确认" in driver.page_source

阶段五:PyAutoGUI桌面自动化

5.1 基础鼠标键盘操作

python 复制代码
import pyautogui

# 移动鼠标并点击
pyautogui.moveTo(100, 200, duration=1)  # 移动到(100,200)位置,耗时1秒
pyautogui.click()  # 左键单击

# 输入文本
pyautogui.typewrite("Hello, PyAutoGUI!", interval=0.1)  # 逐个字符输入

# 快捷键操作
pyautogui.hotkey('ctrl', 'c')  # 模拟Ctrl+C

5.2 图像识别点击

python 复制代码
# 在屏幕上查找指定图片并点击
button_location = pyautogui.locateOnScreen('button.png')
if button_location:
    pyautogui.click(button_location)

阶段六:最佳实践与调试

6.1 使用Page Object模式(提高代码复用性)

python 复制代码
# 示例:登录页面对象化
class LoginPage:
    def __init__(self, driver):
        self.driver = driver
        self.username_field = (By.ID, "username")
        self.password_field = (By.ID, "password")
        self.login_button = (By.XPATH, "//button[text()='登录']")

    def login(self, username, password):
        self.driver.find_element(*self.username_field).send_keys(username)
        self.driver.find_element(*self.password_field).send_keys(password)
        self.driver.find_element(*self.login_button).click()

6.2 错误处理与截图

python 复制代码
try:
    driver.find_element(By.ID, "non-existent-element").click()
except NoSuchElementException:
    driver.save_screenshot("error.png")  # 保存错误截图

阶段七:扩展学习方向

  1. Appium:移动端自动化测试

  2. PyTest:测试框架集成

  3. Headless模式 :无界面浏览器测试

    python 复制代码
    options = webdriver.ChromeOptions()
    options.add_argument("--headless")
    driver = webdriver.Chrome(options=options)
相关推荐
situnima21 分钟前
Python包管理完全指南:pip常用命令与最佳实践
开发语言·python·pip
万才博客25 分钟前
【AI编程学习之Python】第一天:Python的介绍
python·学习·ai编程
三生暮雨渡瀟瀟41 分钟前
Python之函数
开发语言·python
残轩1 小时前
是时候考虑用uv管理你的python项目及依赖了
python·rust
独行soc1 小时前
2025年渗透测试面试题总结-某快手-安全工程师(题目+回答)
网络·数据库·python·安全·面试·职场和发展·红蓝攻防
南玖yy2 小时前
Python 的未来:在多元变革中持续领跑
开发语言·python
Python×CATIA工业智造2 小时前
基于pycatia的CATIA零部件激活状态管理技术解析
python·pycharm·catia二次开发
摸鱼码2 小时前
(头歌作业—python)3.2 个人所得税计算器(project)
开发语言·python
狐凄3 小时前
练习题:110
开发语言·python·算法
DeepLink3 小时前
Python `lambda` 函数详解:写给初学者的极简教程
python