0


Web 自动化测试教程

Web 自动化测试通常使用 Selenium、Playwright 等工具来控制浏览器和进行测试。以下是使用 Python 和 Selenium 框架编写的详细 Web 自动化测试脚本教程。

一、前期准备

  1. 安装 Python:确保已经安装了 Python (版本3.7及以上)。

  2. 安装 Selenium

在终端中运行以下命令安装 Selenium:

pip install selenium
  1. 安装 WebDriver:根据你要测试的浏览器下载对应的 WebDriver,比如 Chrome 使用 ChromeDriver。

• 将 WebDriver 放到环境变量路径或指定路径中,供 Selenium 调用。

二、编写测试脚本

1. 基本自动化测试脚本

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.google.com")

# 在 Google 搜索框中输入查询
search_box = driver.find_element(By.NAME, "q")
search_box.send_keys("Selenium Python 教程")
search_box.send_keys(Keys.RETURN)

# 等待页面加载
time.sleep(2)

# 查找并打印页面标题
print(driver.title)

# 关闭浏览器
driver.quit()

2. 详细解释

• webdriver.Chrome(): 初始化 Chrome 浏览器。如果使用其他浏览器,比如 Firefox,可以使用 webdriver.Firefox()。

• driver.get(url): 打开指定的 URL 页面。

• driver.find_element(By.<METHOD>, "<value>"): 根据不同定位方法查找页面元素。例如可以通过 By.ID、By.CLASS_NAME、By.CSS_SELECTOR 等。

• send_keys(): 模拟用户输入,如在输入框中输入文本。

• Keys.RETURN: 模拟按下回车键。

• driver.quit(): 关闭浏览器。

3. 自动化测试脚本示例:登录网站

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time

# 初始化浏览器
driver = webdriver.Chrome()

# 打开登录页面
driver.get("https://example.com/login")

# 输入用户名
username = driver.find_element(By.ID, "username")
username.send_keys("test_user")

# 输入密码
password = driver.find_element(By.ID, "password")
password.send_keys("password123")

# 点击登录按钮
login_button = driver.find_element(By.ID, "loginButton")
login_button.click()

# 等待页面跳转
time.sleep(3)

# 检查登录是否成功
if "Dashboard" in driver.title:
    print("登录成功!")
else:
    print("登录失败!")

# 关闭浏览器
driver.quit()

三、Selenium 常用元素操作

  1. 查找元素

• find_element(By.ID, "element_id"): 通过 ID 查找元素。

• find_element(By.CLASS_NAME, "class_name"): 通过类名查找元素。

• find_element(By.NAME, "element_name"): 通过名称查找元素。

• find_element(By.CSS_SELECTOR, "css_selector"): 通过 CSS 选择器查找元素。

  1. 常见的元素操作

• click(): 模拟点击。

• send_keys(): 模拟文本输入。

• clear(): 清空输入框。

• get_attribute(): 获取元素属性值。

• text: 获取元素文本。

  1. 等待机制

显式等待:等待某个条件成立。

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

element = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.ID, "element_id"))
)

隐式等待:等待指定时间,默认检查页面加载状态。

driver.implicitly_wait(10)  # 最多等待 10 秒

四、组织测试用例

可以使用 unittest 框架来组织和管理测试用例。

示例:使用 unittest

import unittest
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time

class GoogleSearchTest(unittest.TestCase):
    def setUp(self):
        self.driver = webdriver.Chrome()
        self.driver.implicitly_wait(10)

    def test_search_in_google(self):
        driver = self.driver
        driver.get("https://www.google.com")
        
        search_box = driver.find_element(By.NAME, "q")
        search_box.send_keys("Selenium Python 教程")
        search_box.send_keys(Keys.RETURN)

        time.sleep(2)

        self.assertIn("Selenium Python 教程", driver.title)

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

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

解释:

• setUp(): 每个测试用例执行前都会调用这个方法,用于设置初始条件。

• test_search_in_google(): 实际的测试用例。

• tearDown(): 每个测试用例执行后都会调用,用于清理工作,比如关闭浏览器。

五、常用的高级操作

  1. 处理弹窗

• 接受弹窗:

alert = driver.switch_to.alert
alert.accept()

• 取消弹窗:

alert.dismiss()
  1. 处理多窗口

• 获取当前窗口句柄:

current_window = driver.current_window_handle

• 切换到新窗口:

driver.switch_to.window(new_window_handle)
  1. 执行 JavaScript 代码
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")

六、扩展与集成

  1. 集成到 CI/CD:可以将 Selenium 测试脚本集成到 Jenkins、GitLab CI 等工具中,作为自动化测试的一部分。

  2. 报告生成:使用 Allure 等报告工具生成测试报告,或直接使用 unittest 的 TextTestRunner 生成控制台报告。

总结

Selenium 是一个强大的 Web 自动化测试框架,通过 Python 语言可以轻松地编写自动化测试脚本。结合 unittest 等测试框架,能够快速构建高效的自动化测试流程。


本文转载自: https://blog.csdn.net/Aizzz_1007/article/details/142139672
版权归原作者 不会技术的张同学 所有, 如有侵权,请联系我们删除。

“Web 自动化测试教程”的评论:

还没有评论