
1、Selenium
1.1 简介
Selenium是一个用于Web应用程序测试的工具,它支持多种浏览器,如Chrome、Firefox、Safari等,能够模拟用户在浏览器上的各种操作,如点击、输入、提交表单等,是Web UI自动化测试中最常用的库之一。
1.2 特点
1.3 安装
使用pip命令即可安装Selenium:
pip install selenium同时,需要下载对应浏览器的驱动程序(如ChromeDriver、GeckoDriver等),并配置环境变量。
1.4 示例:打开百度搜索并搜索内容
# 公众号:AllTests软件测试
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time
# 创建Chrome浏览器驱动对象
driver = webdriver.Chrome()
# 打开百度首页
driver.get("https://www.baidu.com")
# 定位搜索输入框
search_input = driver.find_element(By.ID, "kw")
# 在搜索输入框中输入"UI自动化"
search_input.send_keys("UI自动化")
# 模拟按下回车键进行搜索
search_input.send_keys(Keys.ENTER)
# 等待3秒,查看搜索结果
time.sleep(3)
# 关闭浏览器
driver.quit()2、PyAutoGUI
2.1 简介
PyAutoGUI是一个用于自动化桌面GUI操作的Python库,它可以模拟鼠标和键盘的操作,适用于Windows、macOS和Linux等操作系统,常用于桌面应用的自动化测试、自动化办公等场景。
2.2 特点
2.3 安装
使用pip命令安装PyAutoGUI:
pip install pyautogui2.4 示例:模拟鼠标点击和键盘输入
# 公众号:AllTests软件测试
import pyautogui
import time
# 设置操作延迟,每次操作后等待0.5秒
pyautogui.PAUSE = 0.5
# 获取屏幕尺寸
screen_width, screen_height = pyautogui.size()
print(f"屏幕尺寸:{screen_width}x{screen_height}")
# 移动鼠标到屏幕中央
pyautogui.moveTo(screen_width // 2, screen_height // 2)
# 模拟鼠标左键点击
pyautogui.click()
# 模拟键盘输入"Hello, PyAutoGUI!"
pyautogui.typewrite("Hello, PyAutoGUI!")
# 模拟按下回车键
pyautogui.press("enter")
# 等待2秒
time.sleep(2)
# 模拟按下Ctrl+C组合键(复制)
pyautogui.hotkey("ctrl", "c")3、Appium
3.1 简介
Appium是一个用于移动应用自动化测试的开源工具,支持iOS和Android平台的原生应用、混合应用和移动Web应用。它基于WebDriver协议,能够模拟用户在移动设备上的各种操作,如点击、滑动、输入等。
3.2 特点
3.3 安装
首先需要安装Appium服务器,可以通过npm命令安装:
npm install -g appium然后安装Python客户端库:
pip install appium-python-client3.4 示例:Android计算器加法操作
# 公众号:AllTests软件测试
from appium import webdriver
from appium.webdriver.common.by import By
import time
# 配置Desired Capabilities
desired_caps = {
"platformName": "Android", # 平台名称
"platformVersion": "11", # 平台版本
"deviceName": "Android Emulator", # 设备名称
"appPackage": "com.android.calculator2", # 应用包名
"appActivity": ".Calculator", # 应用活动名
"noReset": True# 启动应用时不重置应用数据
}
# 连接Appium服务器,创建会话
driver = webdriver.Remote("http://localhost:4723/wd/hub", desired_caps)
# 等待2秒,确保应用启动完成
time.sleep(2)
# 定位并点击数字"1"
driver.find_element(By.ID, "com.android.calculator2:id/digit_1").click()
# 定位并点击加号"+"
driver.find_element(By.ID, "com.android.calculator2:id/op_add").click()
# 定位并点击数字"2"
driver.find_element(By.ID, "com.android.calculator2:id/digit_2").click()
# 定位并点击等号"="
driver.find_element(By.ID, "com.android.calculator2:id/eq").click()
# 等待1秒,获取计算结果
time.sleep(1)
result = driver.find_element(By.ID, "com.android.calculator2:id/result").text
print(f"计算结果:1+2={result}")
# 关闭会话
driver.quit()4、Playwright
4.1 简介
Playwright是微软开源的一款Web自动化测试工具,支持Chrome、Firefox、Safari以及Edge等主流浏览器,同时兼容Windows、macOS和Linux系统。它采用了全新的自动化架构,能够提供更快速、更可靠的自动化体验,支持页面截图、视频录制等丰富功能。
4.2 特点
4.3 安装
使用pip命令安装Playwright:
pip install playwright安装完成后,还需下载对应浏览器的驱动:
playwright install4.4 示例:打开京东搜索并查看商品列表
# 公众号:AllTests软件测试
from playwright.sync_api import sync_playwright
import time
with sync_playwright() as p:
# 启动Chrome浏览器
browser = p.chromium.launch(headless=False)
# 创建新页面
page = browser.new_page()
# 打开京东首页
page.goto("https://www.jd.com/")
# 定位搜索框并输入"笔记本电脑"
page.locator("#key").fill("笔记本电脑")
# 点击搜索按钮
page.locator(".button").click()
# 等待页面加载完成
page.wait_for_load_state("networkidle")
# 获取前5个商品名称并打印
goods_list = page.locator(".gl-item .p-name em").nth(0).all_text_contents()[:5]
print("前5个商品名称:")
for idx, goods in enumerate(goods_list, 1):
print(f"{idx}. {goods}")
# 等待3秒后关闭浏览器
time.sleep(3)
browser.close()5、Pywinauto
5.1 简介
Pywinauto是一款专门用于Windows桌面应用自动化的Python库,它能够直接与Windows应用程序的UI元素进行交互,支持通过控件名称、类名、坐标等方式定位元素,适用于Windows桌面软件的自动化测试、数据录入、流程自动化等场景。
5.2 特点
5.3 安装
使用pip命令安装Pywinauto:
pip install pywinauto5.4 示例:Windows记事本自动化操作
# 公众号:AllTests软件测试
from pywinauto import Application
import time
# 启动Windows记事本应用
app = Application(backend="win32").start("notepad.exe")
# 连接到记事本窗口
dlg = app.Notepad
# 等待窗口打开
time.sleep(1)
# 在记事本中输入文本
dlg.Edit.type_keys("Pywinauto 桌面自动化示例:\n这是一个Windows记事本的自动化操作演示。", with_spaces=True)
# 点击"文件"菜单
dlg.menu_select("文件(&F)")
# 点击"保存"选项
dlg.menu_select("文件(&F)->保存(&S)")
# 等待保存对话框打开
save_dlg = app["另存为"]
time.sleep(1)
# 输入保存文件名
save_dlg.Edit.type_keys("automation_demo.txt")
# 点击"保存"按钮
save_dlg["保存(&S)"].click()
# 等待保存完成
time.sleep(2)
# 关闭记事本
dlg.close()6、Robot Framework
6.1 简介
Robot Framework是一款通用的开源自动化测试框架,不仅支持UI自动化,还可用于接口测试、关键字测试等多种测试类型。它采用关键字驱动的测试方式,测试用例以表格形式编写,可读性强,易于维护,常与SeleniumLibrary等库结合实现Web UI自动化。
6.2 特点
6.3 安装
使用pip命令安装Robot Framework核心框架:
pip install robotframework若用于Web UI自动化,还需安装SeleniumLibrary:
pip install robotframework-seleniumlibrary6.4 示例:Web搜索自动化测试用例(表格形式)
创建名为baidu_search.robot的测试文件,内容如下:
*** Settings ***
Library SeleniumLibrary
*** Variables ***
${BROWSER} Chrome
${URL} https://www.baidu.com
${SEARCH_INPUT} id=kw
${SEARCH_BUTTON} id=su
${SEARCH_TEXT} UI自动化
*** Test Cases ***
百度搜索测试用例
Open Browser ${URL} ${BROWSER}
Maximize Browser Window
Input Text ${SEARCH_INPUT} ${SEARCH_TEXT}
Click Button ${SEARCH_BUTTON}
Wait Until Page Contains ${SEARCH_TEXT} 10
Close Browser执行测试用例的命令:
robot baidu_search.robot执行完成后,会生成report.html(测试报告)和log.html(测试日志)文件,可直接在浏览器中打开查看详细结果。
7、Pyppeteer
7.1 简介
Pyppeteer是Google Puppeteer的Python端口,基于Chrome DevTools协议实现Web自动化。它专注于控制Chrome或Chromium浏览器,支持无头模式(无界面运行)和有头模式,常用于Web页面爬取、自动化测试、页面渲染等场景,尤其在处理单页应用(SPA)时表现出色。
7.2 特点
7.3 安装
使用pip命令安装Pyppeteer:
pip install pyppeteer首次运行时会自动下载匹配版本的Chromium,若下载失败可手动指定Chromium路径。
7.4 示例:淘宝商品搜索与截图
# 公众号:AllTests软件测试
import asyncio
from pyppeteer import launch
asyncdef taobao_search():
# 启动浏览器,设置为有头模式(headless=False)
browser = await launch(headless=False, args=["--start-maximized"])
# 创建新页面
page = await browser.newPage()
# 设置页面视口大小
await page.setViewport({"width": 1920, "height": 1080})
# 打开淘宝首页
await page.goto("https://www.taobao.com/")
# 等待搜索框加载完成
await page.waitForSelector("#q")
# 输入搜索关键词"无线耳机"并提交
await page.type("#q", "无线耳机")
await page.keyboard.press("Enter")
# 等待搜索结果页面加载
await page.waitForSelector(".J_MouserOnverReq .title a")
# 截取当前页面并保存
await page.screenshot({"path": "taobao_search_result.png", "fullPage": True})
# 获取前3个商品标题
goods_titles = await page.evaluate("""() => {
let titles = [];
let items = document.querySelectorAll('.J_MouserOnverReq .title a');
for (let i = 0; i < 3; i++) {
titles.push(items[i].title);
}
return titles;
}""")
print("前3个商品标题:")
for idx, title in enumerate(goods_titles, 1):
print(f"{idx}. {title}")
# 关闭浏览器
await browser.close()
# 运行异步函数
asyncio.get_event_loop().run_until_complete(taobao_search())本文分享自 AllTests软件测试 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!