使用 Python 和 Selenium 编写测试用例
介绍
为什么选择硒?
编写测试用例
为前端 Web 框架编写测试用例
结论
参考
介绍
如何测试一个模拟真实用户的用户界面?其实有很多前端测试框架可供选择,例如Cypress、TestCafe和Protractor。
我要介绍的这款工具被认为是前端测试的行业标准,在网站测试人员中非常流行。它能够模拟真实用户与用户界面交互,而无需学习其他编程语言即可上手。
请注意,在使用 Selenium 时,不同编程语言之间存在细微差别。这是因为该库由多个开源贡献者创建和维护,他们可能与 Selenium 的主要贡献者并无关联,只是都使用 Selenium 并为其特定的编程语言构建了封装库。
为什么选择硒?
Selenium 不仅是网站 UI 测试的首选工具,还常用于数据抓取和自动化,因为它能够模拟真实用户的行为。
当尝试从使用 JavaScript 显示数据的网站抓取数据时,就会遇到困难。您需要配置浏览器来执行 JavaScript 代码。虽然可以使用Splash来规避这个问题,但这需要额外的配置才能提取数据。
编写测试用例
为了编写测试用例,我选择Pytest作为测试框架,因为它让任何人都能轻松上手创建测试用例和fixtures。这些 fixtures 允许在执行网站测试用例之前快速加载状态或环境。
这使您能够创建用户旅程,自动测试用户如何浏览或与网站互动。您可以将其集成到 CI/CD 流程中,以便在实际部署到生产服务器并正式上线供用户使用之前,捕获用户交互或 UI 错误。
CSS 与 XPath
要使用 Selenium 为网站编写测试用例,首先需要做的就是启动浏览器实例并将其重定向到网站链接。之后,还需要在网站上找到特定的 HTML 元素。
这样 Selenium 就可以对它进行一些操作。例如,可以触发点击事件、等待元素加载完成,或者提取该 HTML 元素的数据来检查值是否正确。
有很多方法可以实现这一点。最常见的方法是使用选择器,可以使用CSS选择器或XPath选择器。
我个人更倾向于使用你想选择的HTML元素的XPath 。因为HTML元素很少会包含用于在网页中标识该元素的类名或名称属性。
如果您使用的是 Firefox 或 Chrome 浏览器,可以通过右键单击鼠标来显示内置的开发者工具,轻松获取 XPath。选择“检查”后,再次右键单击,复制您想要选择的元素的 XPath,以便在运行测试用例时定位该元素。
为前端 Web 框架编写测试用例
在编写测试用例之前,请确保已在 Linux 机器上安装了以下 Python 包和 Chromium:
pip install pytest selenium
sudo apt update
sudo apt install chromium-chromedriver
首先,要编写测试用例,创建一个名为 `.test` 的文件test_user_flow.py,然后使用以下代码:
from selenium import webdriver # imports the selenium webdriver
def test_get_title():
path = "http://www.python.org" # the starting url
driver = webdriver.Chrome() # initialise a driver that is using the chrome driver for selenium
driver.get(path) # redirects the driver to that url path
assert "Python" in driver.title # a test case which checks if the title contains the "Python"
driver.close() # closes the browser once it has completed
test_get_title()
现在让我们运行测试用例,它应该会弹出一个 Chrome 浏览器窗口并运行两次,你的代码应该会通过测试用例:
pytest -v
结论
我希望这篇文章对您有所帮助,并能让您了解 Selenium。Selenium 的主要用途并非仅仅是 UI 测试,而是数据抓取和自动化,因为它能够方便地在 JavaScript 密集型网站上展示数据,并且广泛支持多种编程语言。
我还列出了选择 HTML 元素时应该使用它的原因Xpath。当 HTML 元素不包含任何内容class attributes或id需要识别网页中的元素时,可以使用它。
如果你喜欢这篇文章,请订阅我的冒险家通讯,其中包含我每周在Python、Web 开发、创业领域偶然发现的有趣内容。
您也可以关注我,获取我在Dev上发表的文章的最新更新 。原文标题为《使用 Python 和 Selenium 编写测试用例》,阅读时间:4 分钟,封面图片来自Unsplash 的 Daniel Korpai。
参考
- 柏
- 测试咖啡馆
- 量角器
- Selenium Python
- 溅
- 使用 Selenium 实现 Web 自动化
- 高级 Python 编程:使用 Selenium 实现浏览器自动化
- PyTest
- 固定装置
- 用户旅程
- 选择器
- CSS
- XPath
- 服从测试山羊
- 使用 Pytest 进行 Python 测试
- 无头 Chrome 和浏览器自动化的强大功能
- Selenium 入门 - 使用 Selenium 编写测试
- 拉开








