首页 5G技术

Python Web UI 自动化测试:从基础函数到高效实践

分类:5G技术
字数: (7659)
阅读: (6190)
内容摘要:Python Web UI 自动化测试:从基础函数到高效实践,

Python Web UI 自动化测试 领域,掌握常用的函数是构建稳定、高效测试脚本的基础。本文将从零开始,深入剖析自动化测试中常用到的函数,结合实际案例,帮助你更好地理解和运用。类似于我们在服务器端进行性能测试时,需要理解并发连接数、QPS (Queries Per Second) 等指标,UI 自动化测试也需要掌握一些关键的函数,才能写出高质量的测试脚本。而很多初学者往往忽视这些基础,直接上手 Selenium 或 Playwright 等框架,导致在遇到问题时难以排查。

定位元素:find_element 和 find_elements

在 Web UI 自动化测试中,首要任务就是定位到需要操作的元素。Selenium 提供了 find_elementfind_elements 两个核心函数用于元素定位。

find_element 用于定位单个元素,如果找到多个符合条件的元素,则返回第一个。如果未找到任何元素,则抛出 NoSuchElementException 异常。

Python Web UI 自动化测试:从基础函数到高效实践
from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()  # 或者其他浏览器驱动
driver.get("https://www.example.com")

# 通过 ID 定位元素
element = driver.find_element(By.ID, "element_id")

# 通过 CSS Selector 定位元素
element = driver.find_element(By.CSS_SELECTOR, "div.container > p:first-child")

# 通过 XPath 定位元素 (不推荐,效率较低)
element = driver.find_element(By.XPATH, "//div[@class='container']/p[1]")

#获取元素的文本内容
element_text = element.text
print(element_text)

driver.quit()

find_elements 用于定位所有符合条件的元素,返回一个列表。即使未找到任何元素,也不会抛出异常,而是返回一个空列表。

from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.get("https://www.example.com")

# 定位所有链接
links = driver.find_elements(By.TAG_NAME, "a")

for link in links:
    print(link.get_attribute("href")) # 打印所有链接的 href 属性

driver.quit()

实战避坑:

Python Web UI 自动化测试:从基础函数到高效实践
  • 选择合适的定位方式: 尽量避免使用 XPath,尤其是在页面结构复杂的情况下,XPath 的效率会大幅降低。优先考虑 ID、CSS Selector 等定位方式。
  • 处理 NoSuchElementException 异常: 在使用 find_element 时,一定要进行异常处理,避免程序崩溃。可以使用 try...except 语句捕获该异常,并进行相应的处理,例如打印日志、截图等。
  • 动态加载元素: 很多 Web 应用使用 Ajax 或 JavaScript 进行动态加载,在页面加载完成后,元素才会出现。这时需要使用显式等待或隐式等待,等待元素加载完成后再进行定位。类似 Nginx 需要配置合适的 keepalive_timeout 参数,避免连接过早关闭,UI 测试也需要等待元素加载完成。

元素操作:click、send_keys、clear

定位到元素后,接下来就是对元素进行操作。常用的元素操作函数包括 clicksend_keysclear

  • click:模拟鼠标点击元素。
  • send_keys:向元素输入文本。
  • clear:清空元素的内容。
from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.get("https://www.example.com")

# 定位输入框
input_element = driver.find_element(By.ID, "search_input")

# 输入文本
input_element.send_keys("Python Web UI 自动化测试")

# 点击搜索按钮
search_button = driver.find_element(By.ID, "search_button")
search_button.click()

# 清空输入框
input_element.clear()

# 再次输入文本
input_element.send_keys("Selenium")
search_button.click()

driver.quit()

实战避坑:

Python Web UI 自动化测试:从基础函数到高效实践
  • 确保元素可见: 有些元素可能被其他元素遮挡,或者不在当前视口内,这时无法进行点击或输入操作。可以使用 execute_script 方法滚动到元素可见的位置。
  • 处理不可交互元素: 有些元素可能被禁用(disabled),或者只读(readonly),这时无法进行输入操作。需要先检查元素的属性,确定是否可以进行操作。
  • 使用显式等待: 在输入文本或点击按钮后,页面可能会发生跳转或刷新,这时需要使用显式等待,等待页面加载完成后再进行后续操作。

浏览器操作:get、back、forward、refresh

除了元素操作,还需要掌握一些常用的浏览器操作函数,例如 getbackforwardrefresh

  • get:打开指定的 URL。
  • back:后退到上一个页面。
  • forward:前进到下一个页面。
  • refresh:刷新当前页面。
from selenium import webdriver

driver = webdriver.Chrome()

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

# 后退
driver.back()

# 前进
driver.forward()

# 刷新
driver.refresh()

driver.quit()

实战避坑:

Python Web UI 自动化测试:从基础函数到高效实践
  • 处理页面加载超时: 如果页面加载时间过长,可能会导致测试失败。可以设置页面加载超时时间,避免程序一直等待。类似 Nginx 的 proxy_read_timeout 参数,防止 upstream 服务响应过慢。
  • 处理弹窗: 有些页面可能会弹出警告框、确认框或 prompt 框,需要使用 switch_to.alert 方法切换到弹窗,并进行相应的操作。
  • 处理多窗口: 有些操作可能会打开新的窗口或标签页,需要使用 window_handles 属性获取所有窗口的句柄,并使用 switch_to.window 方法切换到指定的窗口。

高级技巧:execute_script 和 screenshots

除了上述常用函数,还可以使用 execute_script 方法执行 JavaScript 代码,实现一些高级功能。例如,滚动到页面底部、修改元素的样式、获取元素的属性等。

from selenium import webdriver

driver = webdriver.Chrome()
driver.get("https://www.example.com")

# 滚动到页面底部
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")

# 获取元素的属性
element = driver.find_element(By.ID, "element_id")
attribute_value = driver.execute_script("return arguments[0].getAttribute('value');", element)
print(attribute_value)

driver.quit()

另外,截图功能也是 UI 自动化测试中非常重要的一个环节。可以使用 save_screenshot 方法保存当前页面的截图,方便问题排查。

from selenium import webdriver

driver = webdriver.Chrome()
driver.get("https://www.example.com")

# 截图
driver.save_screenshot("screenshot.png")

driver.quit()

实战避坑:

  • 谨慎使用 execute_script 尽量避免在自动化测试中使用 JavaScript 代码,因为这会增加测试的复杂性和维护成本。只有在 Selenium 无法实现的功能时,才考虑使用 execute_script
  • 合理命名截图文件: 为了方便问题排查,建议在截图文件名中包含测试用例名称、时间戳等信息。

掌握这些常用的函数,并结合实际项目进行练习,你就能逐步掌握 Python Web UI 自动化测试 的核心技能,构建稳定、高效的自动化测试体系。后续我们可以结合 Nginx + uWSGI 部署 Python Web 应用的经验,将 UI 自动化测试集成到 CI/CD 流程中,实现自动化测试的持续集成。

Python Web UI 自动化测试:从基础函数到高效实践

转载请注明出处: DevOps小王子

本文的链接地址: http://m.acea4.store/blog/020334.SHTML

本文最后 发布于2026-04-21 16:21:42,已经过了6天没有更新,若内容或图片 失效,请留言反馈

()
您可能对以下文章感兴趣
评论
  • 彩虹屁大师 1 天前
    讲的挺细致,对于新手入门很有帮助,特别是实战避坑部分。
  • 柚子很甜 2 天前
    讲的挺细致,对于新手入门很有帮助,特别是实战避坑部分。