欢迎光临
我们一直在努力

Selenium+Python可通过 元素定位→操作模拟→断言验证 三步实现Web自动化测试

一、环境搭建(5分钟完成)

1. 安装依赖

bash

# 安装Selenium库
pip install selenium

下载浏览器驱动(需与浏览器版本匹配):

  • Chrome驱动:https://sites.google.com/chromium.org/driver/
  • 下载后放入Python安装目录或添加到系统环境变量。

2. 验证安装

python

from selenium import webdriver
# 启动Chrome浏览器
driver = webdriver.Chrome()
# 打开百度首页
driver.get("https://www.baidu.com")
# 关闭浏览器
driver.quit()

运行后若自动打开Chrome并访问百度,说明环境配置成功。

二、核心操作:模拟用户行为

1. 元素定位(8种常用方法)

方法

场景示例

代码示例

find_element_by_id

定位有id属性的元素(如搜索框)

driver.find_element_by_id("kw")

find_element_by_xpath

复杂页面定位(如动态加载元素)

driver.find_element_by_xpath("//input[@name='username']")

find_element_by_link_text

定位超链接文本

driver.find_element_by_link_text("登录")

2. 模拟用户操作

  • 输入文本:send_keys()

python

# 在百度搜索框输入“selenium”
driver.find_element_by_id("kw").send_keys("selenium")

  • 点击按钮:click()

python

# 点击百度搜索按钮
driver.find_element_by_id("su").click()

  • 键盘操作(需导入Keys):

python

from selenium.webdriver.common.keys import Keys
# 输入后按回车键(替代点击按钮)
driver.find_element_by_id("kw").send_keys(Keys.ENTER)

  • 鼠标悬停(需ActionChains):

python

from selenium.webdriver.common.action_chains import ActionChains
# 悬停到“设置”菜单
setting = driver.find_element_by_link_text("设置")
ActionChains(driver).move_to_element(setting).perform()

三、实战案例:模拟电商网站登录

1. 测试用例

目标:自动输入用户名/密码,点击登录,验证是否跳转至首页。

前置条件:准备测试账号(testuser/testpwd123)。

2. 代码实现

python

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 1. 启动浏览器并打开登录页
driver = webdriver.Chrome()
driver.get("https://www.example.com/login") # 替换为实际登录页URL
driver.maximize_window() # 最大化窗口

# 2. 输入账号密码(显式等待元素加载,避免time.sleep)
WebDriverWait(driver, 10).until(
EC.presence_of_element_located(("id", "username"))
).send_keys("test_user")
driver.find_element_by_id("password").send_keys("test_pwd123")

# 3. 点击登录按钮
driver.find_element_by_xpath("//button[@type='submit']").click()

# 4. 验证登录结果(断言URL是否包含“home”)
WebDriverWait(driver, 10).until(
EC.url_contains("home")
)
assert "home" in driver.current_url, "登录失败,未跳转至首页"

# 5. 关闭浏览器
driver.quit()

四、提升效率:避免重复劳动

1. 显式等待(替代time.sleep)

python

# 等待10秒,直到“首页欢迎语”出现
welcome_text = WebDriverWait(driver, 10).until(
EC.presence_of_element_located(("id", "welcome"))
)
assert "欢迎回来" in welcome_text.text

2. 封装成测试类(便于维护)

python

import unittest

class TestLogin(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Chrome()

def test_login_success(self):
self.driver.get("https://www.example.com/login")
# 登录逻辑…

def tearDown(self):
self.driver.quit()

if __name__ == "__main__":
unittest.main()

3. 容器化部署(确保环境一致性)

通过智优达Docker容器化部署指南,将Selenium测试环境打包为Docker镜像,避免“本地能跑,服务器跑不了”的问题:

dockerfile

# Dockerfile示例
FROM python:3.9
RUN pip install selenium
COPY . /app
CMD ["python", "/app/test_login.py"]

赞(0)
未经允许不得转载:171主机测评 » Selenium+Python可通过 元素定位→操作模拟→断言验证 三步实现Web自动化测试
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址