Python自动化测试实战:Selenium从入门到项目落地_第1页
Python自动化测试实战:Selenium从入门到项目落地_第2页
Python自动化测试实战:Selenium从入门到项目落地_第3页
Python自动化测试实战:Selenium从入门到项目落地_第4页
Python自动化测试实战:Selenium从入门到项目落地_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

20XX/XX/XXPython自动化测试实战:Selenium从入门到项目落地汇报人:XXXCONTENTS目录01

自动化测试基础与环境准备02

Selenium核心API详解03

测试用例设计与框架应用04

PageObject设计模式实践05

综合项目实战01自动化测试基础与环境准备Web自动化测试的核心价值Web自动化测试通过程序模拟用户操作,可在较少时间内运行更多测试用例,脚本可重复执行,减少人为错误,克服手工测试在重复任务和多浏览器兼容性验证上的局限。适合自动化的典型场景适用于任务明确且变动少的测试、每日构建后的测试认证、频繁的回归测试、界面稳定的软件系统、需跨平台运行的相同测试案例及大量重复任务,尤其适合软件维护周期长、开发规范的项目。自动化测试实施条件实施Web自动化测试需具备编程语言(如Python、Java等)、Selenium等自动化工具、单元测试框架,同时测试人员需具备一定编程能力,项目需满足需求变动不频繁、自动化脚本可重复使用等条件。Web自动化测试价值与应用场景Selenium核心组件与工作原理

Selenium核心组件Selenium主要包含四大组件:SeleniumIDE(脚本录制与回放工具)、SeleniumWebDriver(核心驱动API)、SeleniumGrid(分布式测试工具)、SeleniumRC(已被WebDriver取代的远程控制组件)。

WebDriver工作原理WebDriver通过浏览器驱动(如ChromeDriver)与浏览器通信,客户端发送操作指令(如点击、输入),驱动将指令转化为浏览器原生API调用,实现模拟用户操作并返回执行结果。

多浏览器支持机制WebDriver提供统一接口,针对不同浏览器(Chrome、Firefox、Edge等)开发专用驱动,确保自动化脚本在多浏览器环境下的兼容性,驱动版本需与浏览器版本严格对应。Python环境安装与验证

Python解释器下载访问Python官网(/),建议下载3.7版本(自动化测试推荐稳定版本),根据操作系统选择对应安装包。

Python安装步骤运行安装文件,勾选"AddPython3.7toPATH"实现环境变量自动配置,推荐选择"Customizeinstallation"自定义安装路径,确保pip组件勾选安装。

安装验证方法通过Win+R打开命令行窗口,输入"python-V"查看版本号,输入"pip-V"验证包管理工具,若显示版本信息则安装成功。PyCharm下载与安装步骤访问JetBrains官网下载PyCharm,推荐选择社区版(开源免费)。运行安装程序,按向导完成安装,建议勾选"AddlaunchersdirtoPATH"选项以便快速启动。Python解释器配置方法打开PyCharm后,在"NewProject"界面中,选择"Newenvironmentusing"并通过"Baseinterpreter"下拉框关联已安装的Python解释器路径,推荐使用虚拟环境隔离项目依赖。Selenium库安装操作通过PyCharm内置终端执行"pipinstallselenium"命令安装最新版Selenium库;或通过"File>Settings>Project>PythonInterpreter"界面点击"+"搜索并安装指定版本。项目创建与脚本编写创建新项目后,右键项目名称选择"New>PythonFile"新建测试脚本。编写代码时可利用PyCharm的语法高亮、自动补全和错误提示功能提升开发效率。PyCharm开发环境配置指南Selenium库安装与版本管理01pip命令行安装通过Python包管理工具pip安装Selenium,命令为:pipinstallselenium。如需指定版本,可使用pipinstallselenium==3.14.0格式。安装完成后,可通过pipshowselenium查看版本信息。02PyCharm图形化安装在PyCharm中,通过File>Settings>Project>PythonInterpreter,点击"+"搜索selenium,选择版本后安装。该方式适合对命令行不熟悉的用户,可直观管理项目依赖。03安装包手动安装从PyPI官网下载Selenium安装包(tar.gz格式),解压后在命令行执行pythonsetup.pyinstall完成安装。此方法适用于无网络环境或需要离线部署的场景。04版本兼容性注意事项Selenium版本需与Python版本匹配,例如Selenium4.x推荐搭配Python3.7及以上版本。同时,需注意与浏览器驱动版本的兼容性,避免因版本不匹配导致自动化脚本运行异常。浏览器驱动下载与环境变量配置

主流浏览器驱动下载地址Chrome驱动:/a//chromedriver/downloads或国内镜像/mirrors/chromedriver;Firefox驱动:/mozilla/geckodriver/releases;Edge驱动:/en-us/microsoft-edge/tools/webdriver/#downloads;IE驱动:/index.html

驱动版本匹配原则驱动版本必须与浏览器版本严格对应,例如Chrome浏览器版本70.0.3538.67需匹配对应版本的chromedriver。可在浏览器设置的"关于"页面查看版本号,再到驱动下载页面选择相同主版本号的驱动

驱动文件存放位置下载后将驱动可执行文件(如chromedriver.exe)放置在Python安装目录的Scripts文件夹下,或项目虚拟环境的Lib/site-packages目录中,确保驱动可被Python解释器识别

环境变量配置方法将驱动所在路径添加到系统PATH环境变量:右键"计算机"→"属性"→"高级系统设置"→"环境变量"→在系统变量PATH中添加驱动路径。配置后可在命令行输入"chromedriver"验证是否成功环境验证:第一个自动化脚本脚本编写步骤1.导入Selenium库与时间模块;2.创建浏览器驱动实例;3.访问目标网页;4.执行元素定位与操作;5.添加等待时间;6.关闭浏览器。核心代码解析使用webdriver.Chrome()初始化浏览器,get()方法打开测试页面,通过find_element_by_xpath()定位元素,send_keys()输入文本,click()执行点击操作,time.sleep()控制执行节奏。环境验证标准脚本运行后,浏览器能自动打开并访问目标页面,完成输入、点击等预设操作,无报错且符合预期交互流程,则环境搭建成功。常见问题排查若驱动版本与浏览器不匹配,需重新下载对应版本驱动;路径错误时,检查驱动是否放置在Python的Scripts目录或配置环境变量。02Selenium核心API详解浏览器操作:窗口控制与导航窗口尺寸控制通过webdriver的window().maximize()方法可最大化浏览器窗口;使用set_window_size(width,height)可自定义窗口尺寸,例如driver.set_window_size(1200,800)设置宽1200像素、高800像素的窗口。窗口切换与句柄管理当页面打开新窗口时,需通过driver.window_handles获取所有窗口句柄,使用driver.switch_to.window(handle)切换窗口。例如handle=driver.window_handles[-1]可定位到最新打开的窗口。浏览器导航控制提供前进(forward())、后退(back())和刷新(refresh())方法,模拟用户浏览行为。例如driver.back()返回上一页,driver.refresh()重新加载当前页面。多窗口操作实战打开百度首页后点击"新闻"链接,通过window_handles获取句柄并切换至新闻窗口,验证标题后关闭当前窗口(close()),最后返回主窗口继续操作。元素定位八大方法实战

ID定位:精准唯一标识通过元素id属性定位,语法:find_element(By.ID,"id值")。适用于有唯一id属性的元素,如百度搜索框id="kw",示例代码:driver.find_element(By.ID,"kw").send_keys("测试")。Name定位:表单元素常用通过元素name属性定位,语法:find_element(By.NAME,"name值")。常用于表单输入框,如百度搜索框name="wd",示例代码:driver.find_element(By.NAME,"wd").send_keys("Selenium")。ClassName定位:类名匹配通过元素class属性定位,语法:find_element(By.CLASS_NAME,"class值")。注意class值可能包含空格,需使用完整类名,如百度搜索框class="s_ipt",示例代码:driver.find_element(By.CLASS_NAME,"s_ipt").clear()。LinkText定位:完整文本链接通过链接完整文本定位,语法:find_element(By.LINK_TEXT,"链接文本")。适用于PartialLinkText定位:模糊文本匹配通过链接部分文本定位,语法:find_element(By.PARTIAL_LINK_TEXT,"部分文本")。用于长文本链接的简化定位,如定位"百度一下"可使用"百度",示例代码:driver.find_element(By.PARTIAL_LINK_TEXT,"百度").click()。TagName定位:标签名定位通过HTML标签名定位,语法:find_element(By.TAG_NAME,"标签名")。适用于页面中唯一标签元素,如定位XPath定位:路径表达式通过XML路径语法定位,支持绝对路径和相对路径,语法:find_element(By.XPATH,"xpath表达式")。如定位百度搜索按钮://input[@id='su'],示例代码:driver.find_element(By.XPATH,"//input[@id='su']").click()。CSSSelector定位:样式选择器通过CSS选择器语法定位,语法:find_element(By.CSS_SELECTOR,"css选择器")。如id选择器#su、类选择器.s_ipt,示例代码:driver.find_element(By.CSS_SELECTOR,"#su").click(),定位效率通常高于XPath。WebElement常用操作方法

输入与清除文本使用send_keys("文本内容")方法向可编辑元素输入文本,如搜索框;通过clear()方法清除已有内容,适用于重复输入测试场景。

鼠标点击操作click()方法模拟鼠标左键点击,支持按钮、链接等可点击元素。注意需先准确定位元素,避免NoSuchElementException异常。

表单提交操作submit()方法用于提交表单,功能类似Enter键,仅适用于form标签内元素。官方推荐优先使用click()方法,适用范围更广。

元素属性与文本获取getText()获取元素可见文本,getAttribute("属性名")获取元素属性值(如value、href)。示例:获取按钮文本或输入框值。

状态判断方法is_displayed()检查元素是否可见,is_enabled()判断元素是否可用,is_selected()验证复选框/单选框是否选中,用于断言元素状态。三种等待机制:强制/隐式/显式等待强制等待(sleep)

通过time.sleep(秒数)实现,固定暂停脚本执行时间。适用于简单场景,但可能因等待过长影响效率,或因页面加载过快造成资源浪费。示例:time.sleep(5)表示强制等待5秒。隐式等待(ImplicitWait)

通过driver.implicitly_wait(秒数)设置全局等待时间,在查找元素时若未立即找到,将在指定时间内周期性重试。作用于整个WebDriver生命周期,不针对特定元素。示例:driver.implicitly_wait(10)表示最长等待10秒。显式等待(ExplicitWait)

结合WebDriverWait和ExpectedConditions,针对特定元素设置条件等待。当条件满足时立即执行后续操作,超时则抛出异常。灵活性高,可精确控制等待条件。示例:WebDriverWait(driver,10).until(expected_conditions.presence_of_element_located((By.ID,"kw")))。特殊元素处理:弹窗/下拉框/文件上传弹窗处理策略与实现针对alert、confirm、prompt三种弹窗类型,采用switch_to.alert方法切换至弹窗,使用accept()确认、dismiss()取消操作,send_keys()输入文本。示例代码:driver.switch_to.alert.accept()。下拉框定位与选择技巧通过Select类处理标准下拉框,支持index、value、visible_text三种选择方式。非标准下拉框需先点击展开,再定位选项元素。示例代码:Select(driver.find_element(By.ID,"select")).select_by_visible_text("选项")。文件上传自动化实现利用send_keys()方法直接传入文件绝对路径实现上传,无需模拟点击。示例代码:driver.find_element(By.NAME,"upfile").send_keys(r"C:\test\file.txt")。注意元素需为input标签且type="file"。JavaScript执行与页面交互

执行JavaScript脚本使用driver.execute_script()方法执行JavaScript代码,可实现页面滚动、元素属性修改等操作。例如:driver.execute_script("window.scrollTo(0,1000)")可将页面向下滚动1000像素。

页面滚动操作通过JavaScript实现页面滚动,包括滚动到指定位置、上滑、下滑等。示例代码:driver.execute_script("window.scrollTo(0,document.body.scrollHeight)")可滚动到页面底部。

元素属性与样式修改利用JavaScript动态修改页面元素的属性和样式,如隐藏元素、更改颜色等。例如:driver.execute_script("arguments[0].style.display='none'",element)可隐藏指定元素。

处理复杂交互场景对于Selenium原生方法难以实现的交互,可通过JavaScript辅助完成,如处理日期选择器、复杂表单验证等。示例:driver.execute_script("document.getElementById('datepicker').value='2026-04-01'")。03测试用例设计与框架应用独立性原则每个测试用例应独立验证单一功能点,不依赖其他用例执行结果。例如"登录成功"用例需自带测试账号,不依赖"注册"用例前置操作。可复现性原则用例步骤需明确输入数据与操作序列,确保不同执行者(人或脚本)获得一致结果。避免使用"任意用户名"等模糊表述,需指定具体测试数据。简洁性原则聚焦自动化可执行的核心操作,剔除手工测试中的主观判断步骤(如界面颜色检查)。步骤需对应明确的元素定位与操作方法,便于脚本实现。可验证性原则预期结果需量化可判断,避免"登录成功"等模糊描述。应具体到页面元素状态,如"跳转至首页且右上角显示用户名'test001'",支持脚本断言实现。自动化测试用例设计原则unittest测试框架核心组件

TestFixture(测试夹具)负责测试用例执行前后的环境准备与清理,主要通过setUp()方法进行初始化(如打开浏览器、加载页面),tearDown()方法进行资源释放(如关闭浏览器),确保每个测试用例独立运行。TestCase(测试用例)测试执行的最小单元,需继承unittest.TestCase类,以test开头命名测试方法。通过assert系列方法(如assertEqual、assertTrue)验证实际结果与预期结果是否一致,判断用例成功或失败。TestSuite(测试套件)用于组织多个测试用例或子套件,通过unittest.TestSuite()创建,使用addTest()方法添加测试用例,实现批量执行测试,提高测试效率。TestRunner(测试执行器)负责调度并执行测试用例,生成测试结果。常用TextTestRunner以文本形式输出结果,也可集成HTMLTestRunner等工具生成可视化报告,清晰展示测试通过率、失败原因等关键信息。测试夹具:setUp与tearDown应用

测试夹具的核心作用测试夹具是unittest框架的重要组件,用于在测试用例执行前后完成环境准备与清理工作,确保每个测试用例独立运行在一致的环境中,提高测试结果的可靠性。

setUp方法:测试前置条件setUp方法在每个测试用例执行前自动调用,主要完成初始化操作,如启动浏览器实例、打开目标网页、配置隐式等待等。示例:初始化Chrome浏览器并最大化窗口。

tearDown方法:测试环境清理tearDown方法在每个测试用例执行后自动调用,负责清理测试环境,如关闭浏览器、删除临时文件、重置测试数据等。示例:调用driver.quit()关闭所有关联浏览器窗口。

实战应用:登录测试用例示例在登录功能测试中,setUp可实现打开登录页面并输入默认账号,tearDown可完成退出登录并关闭浏览器,确保每个登录测试用例互不干扰,独立验证不同场景。断言方法与测试报告生成

01常用断言方法unittest框架提供多种断言方法,如assertEqual(a,b)验证a等于b,assertTrue(x)验证x为真,assertIn(a,b)验证a在b中,用于判断实际结果与预期结果是否一致。

02断言策略选择功能验证优先使用assertEqual等具体断言,流程判断使用assertTrue/False,复杂场景组合使用多个断言。失败时assert终止用例,verify(需自定义)记录错误继续执行。

03测试报告工具介绍pytest-html可生成HTML格式报告,包含用例通过率、失败详情及截图;allure-pytest支持更丰富的图表与历史趋势分析,需通过命令行生成并打开报告文件。

04报告生成实战安装pytest-html后,执行命令"pytest--html=report.html"生成报告。报告中展示每个用例的执行状态、耗时,失败用例附带错误堆栈信息,便于问题定位。数据驱动测试:DDT与Excel集成数据驱动测试(DDT)核心价值DDT通过将测试数据与脚本分离,实现用例批量执行与场景覆盖,支持多组输入验证功能边界,提升测试效率与可维护性。Excel测试数据管理规范采用标准化表格结构:首行定义字段名(如username/password/expectedResult),后续行存储测试数据,支持正常/异常场景分类管理。Python读取Excel数据实现使用openpyxl库读取Excel文件:通过load_workbook加载文件,遍历sheet行数据,封装为字典列表供测试用例调用,示例代码:fromopenpyxlimportload_workbook。DDT框架与Unittest集成通过@ddt装饰器标记测试类,@data(*test_data)注入数据,@unpack解包参数,实现一条用例脚本驱动多组数据执行,简化代码结构。实战案例:登录功能数据驱动测试设计包含5组测试数据(正确账号、空用户名、错误密码等),通过Excel存储数据,DDT动态生成测试用例,自动验证不同场景下的登录结果。04PageObject设计模式实践POM设计思想与优势

POM核心设计思想页面对象模型(PageObjectModel)将页面元素与操作封装为独立对象,实现测试逻辑与页面交互分离,使代码结构清晰。

代码复用与维护性提升通过封装页面元素定位与操作方法,相同页面的测试用例可共享代码,减少重复开发,修改页面仅需更新对应页面对象。

测试用例可读性增强以业务场景为导向的方法命名(如enter_username、click_login),使测试步骤直观易懂,非技术人员也能理解用例逻辑。

降低维护成本与错误率元素定位信息集中管理,当页面UI变化时,仅需修改页面对象中的定位表达式,避免在多个用例中重复修改,减少人为错误。页面元素定位封装将页面元素的定位方式(如ID、XPath、CSS选择器)统一声明为类属性,实现定位信息与业务逻辑分离。例如:用户名输入框定义为username=By.ID,"user_id"。操作方法抽象将重复的元素操作(如输入文本、点击按钮)封装为独立方法,例如封装enter_text(element,text)方法处理输入逻辑,提高代码复用性。PageObject模式应用采用页面对象模型,将每个页面抽象为独立类,类中包含页面元素属性和操作方法。例如LoginPage类封装登录页面的元素定位和登录功能方法。等待机制整合在封装方法中集成显式等待(WebDriverWait),确保元素加载完成后再执行操作,例如通过until(expected_conditions.presence_of_element_located)实现智能等待。页面元素封装与方法抽象测试用例与页面对象分离

页面对象模型(POM)核心思想将页面元素定位与操作逻辑封装为独立类,测试用例仅调用页面类方法,实现业务逻辑与测试数据分离,提升代码复用性和可维护性。

页面对象类设计规范页面类包含元素定位属性(如用户名输入框By.ID)和操作方法(如输入用户名、点击登录),通过构造函数接收WebDriver实例,封装页面交互细节。

测试用例层实现策略测试用例层通过实例化页面对象,传入测试数据调用页面方法,专注于测试流程控制和断言验证,避免直接操作元素定位,降低维护成本。

实战案例:登录功能POM实现登录页面类封装用户名/密码输入框定位及登录按钮点击方法,测试用例层读取Excel测试数据,调用登录方法并断言登录结果,实现数据与逻辑解耦。05综合项目实战项目架构设计与环境搭建自动化测试项目架构典型的Python+Selenium自动化测试项目架构包括:tests(测试用例)、pages(页面对象模型)、utils(工具类)、reports(测试报告)等目录,实现代码模块化与维护性。Python环境准备推荐安装Python3.7及以上版本,通过官网(/)下载对应操作系统安装包,安装时勾选"AddPythontoPATH"以自动配置环境变量,安装后可通过命令行"python--version"验证。PyCharm开发环境配置下载并安装PyCharm(社区版免费),创建项目时建议使用虚拟环境(venv)隔离依赖,在Settings中配置Python解释器路径,确保项目依赖独立管理,避免版本冲突。Selenium库安装通过pip命令"pipinstallselenium"在线安装Selenium库,如需指定版本可使用"pipinstallselenium==3.14.0",安装后可通过"pipshowselenium"查看版本信息。浏览器驱动配置根据使用的浏览器(Chrome、Firefox等)下载对应版本驱动,Chrome驱动可从/a//chromedriver/获取,下载后将驱动放置于Python安装目录的Scripts文件夹下或配置环境变量。登录功能自动化测试实战

测试场景拆解按功能划分为正常场景(如正确账号密码登录)和异常场景(如空用户名、错误密码、手机号格式错误等),确保核心功能点全覆盖。

测试用例设计标准包含用例编号、测试模块、场景描述、前置条件、操作步骤和预期结果,例如"Login_Auto_001:验证用户名密码正确时登录成功,预期跳转首页并显示用户名"。

PageObject模式应用将页面元素(如用户名输入框、登录按钮)封装为属性,操作逻辑(输入、点击)封装为方法,提高代码复用性,如CsdnPage类封装登录页面元素与操作。

测试数据管理通过CSV或Excel文件存储测试数据(如账号、密码、预期提示),使用openpyxl等库读取数据,实现数据与脚本分离,支持多组用例批量执行。

断言与结果验证通过assert语句验证实际结果与预期结果一致性,如判断页面跳转URL、元素文本或错误提示信息,确保测试有效性。数据表格操作与断言验证

数据表格定位方法通过XPath轴定位表格行数据,如使用"//table[@id='dataTable']//tr"获取所有行,结合索引定位目标行;使用CSS选择器"#dataTabletbodytr:nth-child(3)"直接定位第三行数据。

表格数据提取技巧通过find_elements方法获取表格所有单元格,遍历提取文本内容;使用get_attribute("textContent")获取隐藏文本,处理动态加载的表格数据。

断言验证核心方法使用assertEqual验证实际值与预期值一致性,如assertEqual(cell_text,"测试数据");通过assertIn判断数据是否存在于表格中,如assertIn("关键信息",table_text)。

动态表格处理策略结合显式等待WebDriverWait(driver,10).until(EC.presence_of_element_located((By.ID,"table_loaded")))确保表格加载完成;处理分页表格时,通过循环点击下一页实现全量数据验证。测试报告核心指标解读关注测试用例通过率、失败用例分布、模块缺陷密度等关键指标,通过数据趋势判断系统稳定性。例如:登录模块失败率15%需重点排查。失败用例复现与环境检查针对失败用例,优先检查环境配置(如浏览器版本、驱动匹配)、测试数据有效性及网络状态,排除非代码因素影响。缺陷定位与日志分析结合Selenium执行日志(如元素定位失败、超时异常)和页面截图,定位问题根因。例如:NoSuchElementException可能源于XPath表达式错误或页面加载延迟。问题分类与优先级划分按严重程度(阻断/严重/一般/建议)分类缺陷,优先解决影响主流程的问题(如支付功能失败),并记录缺陷详细步骤与预期结果。测试报告分析与问题定位自动化脚本优化技巧智能等待策略优先使用显式等待(WebDriverWait)定位关键元素,设置合理超时

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论