ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Python Selenium自动化测试框架搭建与实战指南

Python Selenium自动化测试框架搭建与实战指南 1. 项目概述为什么我们需要自动化框架若是无论你身为一名测试工程师, 还是爬虫开发者, 又或者是任何那些需要同网页开展频繁、重复交互的程序员, 那么“自动化”这个词汇对你来讲肯定不会陌生, 手动去点击按钮, 再填写表单, 接着验证结果, 这些操作不但枯燥乏味, 此外还极其容易出现差错, 特别是在存在需要去覆盖相当大量测试用例, 或者执行高频数据抓取之际, 我最开始接触它, 是由于厌烦了每天手动去执行上百条回归测试用例, 效率不高暂且不提, 还常常因为手滑点错因此需要重新来过。本质上, 它是一个工具集, 用于Web应用程序自动化测试, 然而, 它早已经跨过了测试的范围界限, 摇身一变成为浏览器自动化领域的“瑞士军刀”。经由一套特定的协议, 它赋予我们便利, 能够运用代码, 就如同真实用户那样操作浏览器: 开启网页, 点击链接, 输入文本, 提交表单, 抓取数据。这听上去, 与“外挂”或者“机器人”是不是极为相似? 确实如此, 它的核心观念就是模仿真人的操作行径, 不过相比真人, 速度更快, 精准度更高, 且不知疲倦。哪来的缘由去挑选 这般的组合呢? 依照我的实际经历来讲, 其语法具备简洁的特性, 库生态展现出丰富的态势, 上手的速度极为迅速, 格外契合快速搭建原型以及自动化脚本的需求。它给予了对差不多所有主流浏览器, , Edge的原生支持, 而且社区氛围活跃, 碰到问题极易找寻到解决办法。一旦你将这两者予以结合 , 那就如同拥有了一支能够全天候连续工作的“数字员工”队伍, 不管是用于搭建稳固的UI自动化测试框架, 还是开展繁杂的网页数据采集流程, 均能够应对自如。2. 环境搭建与核心组件解析开始编写第一行体现自动化的代码以前, 存在一个具有稳定特性、能够复现相应内容的环境作为基石。不少新手在这个地方遭遇问题, 并非是由于相关步骤颇为繁复, 而是源于出现了版本兼容性方面的问题。我将会引领你经历一趟针对我曾验证过数量达到无数数次的、具备稳定性质的搭建流程。2.1 环境与库安装最先, 要保证自身拥有一个洁净的环境。自己强烈提议运用venv或者conda去营造独立的虚拟环境, 以此防止不同项目之间的包版本发生冲突。这属于专业开发的首个步骤里的良好习惯。# 创建并激活虚拟环境以venv为例 python -m venv selenium_env # Windows selenium_env\Scripts\activate # macOS/Linux source selenium_env/bin/activate激活环境后安装库非常简单pip install selenium这里存在一个关键要点, 即不要不加思考地去安装最新的版本。所需要的版本应当与你所使用的浏览器驱动版本大致达成匹配。一般情况下, 在安装库的时候会自动安装一个具备兼容性的工具, 该工具能够帮助你自动进行驱动的管理, 这是当前最为省心省力省事毫无烦恼的方案。然而为了使得让你得以明白理解其中的底层原理, 那么我们要先从手动配置入手开始操作展开。2.2 浏览器驱动的选择与配置其原本仅仅是一名“指挥官”, 它所需配置与之对应的“驾驶员”, 以此来切实操控浏览器, 这恰恰是新手极易陷入困惑以及出现差错的所在之处。去官网下载那种, 与你浏览器主版本号完全一样的驱动, 用于Edge新版。比如说, 要是你是120.0.6099.109这个版本, 那就找120.x.x.x版本的驱动。把下载下来的.exe文件, 或者macOS/Linux系统适用的文件, 放在一个目录里, 接着把这个目录添加到系统的PATH环境变量当中, 或者直接在代码里指定路径。用于 同理去的发布页下载对应版本。要留意, 浏览器会自行更新, 然而驱动却不会。常常出现那种“浏览器升级之后脚本忽然报错”的状况, 大多是由于驱动版本不匹配所致。错误提示信息常常包含“This of only XX”。故而, 定期去检查并且更新驱动是维护自动化脚本过程当中的日常工作里的一项。更好的做法是: 运用, 为了防止手动管理所带来的繁杂状况, 能够直接于代码里运用, 库。在安装完毕之后, 它会自行检测你的浏览器版本进而下载与之相匹配的驱动。pip install webdriver-manager在代码中这样使用from selenium import webdriver from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager service Service(ChromeDriverManager().install()) driver webdriver.Chrome(serviceservice)这种方式将驱动版本管理的痛点, 彻彻底底地解决了, 是我当下, 最为推荐的方式。2.3 初识你的浏览器遥控器好啦让其已然安装配置妥善之后, 我们即将着手去创建首个驱动实例, 此乃全部自动化操作起始之点呢。from selenium import webdriver # 最基本的方式要求chromedriver已在PATH中 driver webdriver.Chrome() # 如果驱动不在PATH需指定路径 # driver webdriver.Chrome(executable_path/path/to/your/chromedriver) # 使用webdriver-manager的推荐方式如上节所示运行这一行代码, 你将会目睹一个崭新的浏览器窗口被开启, 这个对象便是你后续全部操作的起始点, 要记得在脚本的末尾调用.quit()去关闭浏览器并释放资源, 不然在后台有可能会残留浏览器进程。3. 元素定位自动化操作的“眼睛”当在自动化状态之下去操作网页时, 首先要做的那一步, 便是去寻找到你打算操作的那个按钮, 或者输入框, 又或者是链接。这里一共提供了多达8种的定位策略而是在实际的项目情形当中, 只要能够熟练地掌握其中3至4种, 便足够用来应对99%的场景哟。3.以下是改写后的: 八大定位策略的详细解说以及选用的原则 , ID 方面, 属于是最优先被选择。(通过.ID, “”)。ID 一般来讲是唯一的那种, 定位起来速率最快、稳定性也是最高的。Name , 是次优先的情况。(通过.NAME, “”)。常常被应用于表单元素当中。XPath , 是功能最为强大的如同“万能钥匙”一般的存在。能够对页面之上的任何一处元素实施定位但要是书写得不符合要求就会变得极其脆弱。一种名为CSS的技术, 其性能一般的情况之下乃是优于XPath, 并且语法本身更为简洁, 所以成为前端开发者的首选技术。存在.(By., “#login.btn-”)这样一种情况。名为Class Name的这一项则是.(By., “btn-”)。需要注意的是, 一个元素有可能存在多个class, 在这种情景下需要填写完整的class字符串。名为Tag Name的这一项是。
返回列表