功能自动化测试方案设计
T-Box功能自动化测试

案例分享| T-Box功能自动化测试方案背景T-Box是实现汽车车联网的一个关键环节,从起初单纯的实现车辆信息采集,已发展到具有车辆信息监测及信息交互(V2X)、车辆远程控制、安全监测和报警、远程诊断、边缘计算等多种离线和在线的应用功能的载体。
为保障T-Box功能的正常运转,对其进行功能测试就尤为重要。
T-Box作为“边缘节点”,与车内控制器通过传统总线或车载以太网进行信息交互,与车外TSP(Telematics Service Platform)通过蜂窝基站无线技术进行信息交互。
从测试实现的角度,针对T-Box功能测试而言,由于自动化测试所需的“Input仿真”与“Output监测”的闭环存在一定难度,故基本通过手动或半自动化的传统方式进行测试,依靠“人在环”方式记录测试数据以及判断测试结果。
但该方式测试效率低且覆盖度受限,难以满足研发的快速迭代和深度验证的要求。
本文将介绍一种实现T-Box部分功能(与移动终端交互的功能)的自动化测试技术路径以及相关测试经验与大家分享。
测试对象和原理分析T-Box与手机移动端的主要交互功能如下:图1 T-Box与手机端主要交互功能内容车内T-Box与手机端的交互流程如下:图2 车内T-Box与手机端交互流程以车主希望能够通过手机中的APP查询到车辆当前的状态信息为例:●车辆通过卫星获取位置信息●车内T-Box通过传统总线或车载以太网获取车辆当前状态信息●车内T-Box通过蜂窝基站将信息传递给TSP服务器●TSP服务器通过蜂窝基站将数据传递到车主手机APP中从T-Box与手机端交互流程来分析,要实现T-Box功能自动化测试,需要以T-Box为中心搭建由T-Box车内交互平台(车内网络)与T-Box车外交互平台(TSP)而组成的闭环系统。
其中T-Box与车内交互可通过总线仿真与监测来实现,而T-Box与TSP交互的无线信号仿真较困难。
但是测试T-Box功能的最终目的是验证APP的触发、显示与T-Box功能逻辑是否满足要求。
自动化测试方案

自动化测试方案引言概述:随着软件开发的快速发展,自动化测试在软件质量保障中扮演着重要角色。
自动化测试方案能够提高测试效率、减少人力成本,并且能够更好地应对软件迭代和快速交付的需求。
本文将介绍一个完整的自动化测试方案,包括测试工具的选择、测试环境的搭建、测试用例的设计和执行,以及测试结果的分析和报告。
一、测试工具的选择1.1 功能测试工具功能测试工具是自动化测试的核心工具,它能够模拟用户的操作,自动执行测试用例,并对测试结果进行验证。
在选择功能测试工具时,需要考虑以下几个因素:- 工具的易用性:选择一个易于上手的工具,能够快速上手并进行测试用例的设计和执行。
- 工具的可扩展性:选择一个支持多种编程语言和测试框架的工具,能够适应不同项目的需求。
- 工具的兼容性:选择一个能够与其他测试工具和开发工具无缝集成的工具,提高测试效率。
1.2 性能测试工具性能测试工具能够模拟多用户同时访问系统的场景,测试系统的性能和稳定性。
在选择性能测试工具时,需要考虑以下几个因素:- 工具的负载模拟能力:选择一个能够模拟大量用户同时访问系统的工具,能够测试系统在高负载情况下的性能表现。
- 工具的监控和分析能力:选择一个能够监控系统的各项指标,并能够生成详细的性能报告的工具,方便分析系统的性能问题。
- 工具的兼容性:选择一个能够与其他测试工具和开发工具无缝集成的工具,提高测试效率。
1.3 安全测试工具安全测试工具能够模拟各种攻击场景,测试系统的安全性和防护能力。
在选择安全测试工具时,需要考虑以下几个因素:- 工具的攻击模拟能力:选择一个能够模拟各种常见和高级攻击场景的工具,能够全面测试系统的安全性。
- 工具的漏洞扫描能力:选择一个能够主动扫描系统漏洞,并给出相应修复建议的工具,提高系统的安全性。
- 工具的兼容性:选择一个能够与其他测试工具和开发工具无缝集成的工具,提高测试效率。
二、测试环境的搭建2.1 虚拟化环境虚拟化环境能够提供灵活的测试环境搭建和管理能力,能够快速创建、复制和销毁测试环境。
自动化测试方案

自动化测试方案一、引言自动化测试是指利用软件工具或者脚本来执行测试任务的一种方式,相对于手动测试,它具有高效、准确、可重复执行的特点。
本文将介绍一个针对某个软件产品的自动化测试方案,旨在提高测试效率、减少人力资源的投入,并确保软件产品的质量。
二、测试目标本次自动化测试的目标是对某个软件产品进行全面的功能测试和回归测试,以确保软件的稳定性和可靠性。
具体的测试目标包括:1. 验证软件的基本功能是否符合需求;2. 检测软件的性能是否满足预期;3. 检查软件的兼容性和可移植性;4. 进行回归测试,确保软件的修改不会对原有功能造成影响。
三、测试环境1. 硬件环境:- 操作系统:Windows 10- 处理器:Intel Core i7 3.0GHz- 内存:8GB- 存储:256GB SSD2. 软件环境:- 开辟工具:Visual Studio 2022- 测试框架:Selenium WebDriver- 编程语言:C#四、测试用例设计在进行自动化测试之前,需要先设计测试用例。
测试用例是对软件功能的一系列测试步骤和预期结果的描述。
测试用例设计应覆盖软件的各个功能模块,并考虑不同的输入和边界条件。
以下是几个示例测试用例:1. 登录功能测试- 输入正确的用户名和密码,验证是否成功登录;- 输入错误的用户名和密码,验证是否提示登录失败;- 输入为空的用户名和密码,验证是否提示输入不能为空;- 输入非法字符的用户名和密码,验证是否能正确处理。
2. 注册功能测试- 输入有效的用户名和密码,验证是否成功注册;- 输入已存在的用户名,验证是否提示用户名已存在;- 输入非法字符的用户名和密码,验证是否能正确处理;- 输入不符合要求的密码,验证是否提示密码强度不够。
3. 商品搜索功能测试- 输入关键字进行搜索,验证搜索结果是否正确;- 输入不存在的关键字进行搜索,验证是否提示无结果;- 输入特殊字符进行搜索,验证是否能正确处理;- 输入空格进行搜索,验证是否能正确处理。
自动化测试方案

自动化测试方案一、背景介绍在软件开发过程中,为了保证软件的质量和稳定性,测试是一个非常重要的环节。
传统的手动测试效率低下且容易出错,因此自动化测试成为了一种有效的解决方案。
本文将介绍一种自动化测试方案,以提高测试效率和准确性。
二、测试目标1. 提高测试效率:通过自动化测试,减少人工操作,加快测试速度。
2. 提高测试准确性:自动化测试能够减少人为因素对测试结果的影响,提高测试结果的准确性。
三、测试工具选择根据项目需求和技术栈的不同,可以选择不同的自动化测试工具。
常见的自动化测试工具有Selenium、Appium、Jenkins等。
根据具体情况,选择适合项目的自动化测试工具。
四、测试用例设计1. 根据需求文档和功能设计,编写测试用例。
测试用例应尽可能覆盖到所有功能模块,并考虑各种边界情况。
2. 测试用例应具备可读性和可维护性,使用简洁明了的语言描述测试步骤和预期结果。
五、测试环境搭建1. 搭建自动化测试环境,包括测试服务器、测试数据库、测试工具等。
2. 配置测试环境参数,确保测试环境的稳定性和可靠性。
六、自动化脚本开发1. 根据测试用例,编写自动化脚本。
脚本应具备可读性和可维护性,使用合适的编程语言编写,如Java、Python等。
2. 脚本应能够模拟用户的操作,包括点击、输入、验证等。
七、测试执行与结果分析1. 执行自动化测试脚本,生成测试结果。
2. 分析测试结果,查找问题和异常,并进行记录和报告。
八、测试报告生成1. 根据测试结果,生成测试报告。
测试报告应包含测试概况、测试执行情况、问题和异常等详细信息。
2. 测试报告应具备可读性和可理解性,方便项目组成员查阅和分析。
九、测试维护与优化1. 定期维护和更新测试用例,保证测试用例的有效性和准确性。
2. 优化自动化测试脚本,提高测试效率和稳定性。
十、总结通过使用自动化测试方案,可以大大提高测试效率和准确性。
在实施自动化测试时,需要根据项目需求选择合适的测试工具,并根据测试用例设计和脚本开发,进行测试执行和结果分析。
自动化测试方案

自动化测试方案一、背景介绍随着软件开发的快速发展,传统的手动测试已经无法满足对软件质量的要求。
自动化测试作为一种高效、可靠的测试方法,逐渐成为软件开发过程中必不可少的环节。
本文将介绍一种针对某个特定项目的自动化测试方案。
二、测试目标本自动化测试方案的目标是提高测试效率、降低测试成本、提升软件质量。
通过自动化测试,可以快速准确地执行大量的测试用例,发现潜在的缺陷,并及时修复,从而保证软件的稳定性和可靠性。
三、测试工具选择根据项目的需求和特点,我们选择了以下自动化测试工具:1. Selenium WebDriver:用于模拟用户操作,执行功能测试和界面测试。
2. JUnit:用于编写和执行单元测试,对软件的各个模块进行测试。
3. Apache JMeter:用于执行性能测试,评估系统的负载能力和性能稳定性。
4. Jenkins:用于持续集成和自动化部署,实现测试流程的自动化。
四、测试用例设计在自动化测试之前,需要先进行测试用例的设计。
测试用例应覆盖软件的各个功能模块,包括正常情况下的功能测试、异常情况下的边界测试和异常处理测试。
测试用例应具备可重复性和可维护性,以便在软件升级或功能扩展时进行更新。
五、测试环境搭建在进行自动化测试之前,需要搭建相应的测试环境。
包括:1. 搭建测试服务器:用于部署被测软件和测试工具。
2. 配置测试数据库:用于存储测试数据和记录测试结果。
3. 配置测试数据:准备测试所需的数据,包括正常数据和异常数据。
六、测试执行1. 功能测试:使用Selenium WebDriver编写测试脚本,模拟用户操作,对软件的各个功能进行测试。
测试脚本应具备可读性和可维护性,以便在需求变更时进行修改。
2. 单元测试:使用JUnit编写测试用例,对软件的各个模块进行测试。
测试用例应覆盖各种情况,包括正常情况和异常情况。
3. 性能测试:使用Apache JMeter进行性能测试,模拟多用户同时访问系统,评估系统的负载能力和性能稳定性。
自动化测试方案

自动化测试方案一、背景介绍随着软件开辟的快速发展,传统的手动测试已经无法满足快速迭代和高质量的需求。
自动化测试作为一种高效、可靠的测试方法,逐渐成为软件开辟过程中不可或者缺的一环。
本文将详细介绍自动化测试方案的设计和实施,以提高测试效率和质量。
二、目标和范围1. 目标:提高测试效率、减少人工测试工作量、提高测试覆盖率、加快软件交付速度、提高软件质量。
2. 范围:本方案适合于所有软件开辟项目,包括Web应用、挪移应用、桌面应用等。
三、自动化测试方案设计1. 测试工具选择根据项目需求和技术栈选择合适的自动化测试工具,常见的工具有Selenium、Appium、JUnit、TestNG等。
根据具体情况,可以选择单一工具或者结合多个工具使用。
2. 测试用例设计根据需求文档和产品功能,编写测试用例。
测试用例应具备可复用性、可扩展性和可维护性。
测试用例应覆盖主要功能、边界条件、异常情况等。
3. 自动化测试脚本编写根据测试用例,使用选定的自动化测试工具编写测试脚本。
测试脚本应具备良好的可读性和可维护性,使用合适的设计模式和框架,如Page Object模式、数据驱动测试等。
4. 环境搭建搭建测试环境,包括测试服务器、数据库、测试数据等。
确保测试环境与生产环境一致,以保证测试结果的准确性。
5. 自动化测试执行将编写好的自动化测试脚本部署到测试环境中,执行测试脚本并生成测试报告。
测试报告应包括测试结果、错误日志、截图等信息,以便开辟人员快速定位和修复问题。
6. 持续集成与持续部署将自动化测试融入到持续集成和持续部署流程中,确保每次代码提交都会触发自动化测试,并及时反馈测试结果。
这样可以提前发现和解决问题,减少错误的发布。
四、自动化测试方案实施1. 团队培训为测试团队提供相关的自动化测试工具培训,使其掌握工具的使用和编写测试脚本的能力。
培训内容包括工具的安装配置、测试脚本编写、常见问题解决等。
2. 测试用例评审对编写的测试用例进行评审,确保测试用例的准确性和完整性。
自动化测试方案

自动化测试方案一、背景介绍在软件开发过程中,为了保证软件质量和提高开发效率,自动化测试方案变得越来越重要。
自动化测试方案是指通过使用自动化测试工具和技术,对软件进行自动化测试,以提高测试效率、减少人力成本和提升测试覆盖率。
二、目标和目的1. 目标:设计一个全面的自动化测试方案,以确保软件的稳定性、可靠性和高质量。
2. 目的:a. 提高测试效率:通过自动化测试,减少人工测试的工作量,提高测试效率。
b. 减少人力成本:自动化测试可以减少人力资源的投入,降低测试成本。
c. 提升测试覆盖率:自动化测试可以覆盖更多的测试场景和测试用例,提高测试覆盖率。
d. 加快软件发布速度:自动化测试可以快速执行测试用例,加快软件发布速度。
三、自动化测试方案实施步骤1. 确定测试工具和技术:a. 选择合适的自动化测试工具,如Selenium、Appium等,根据项目需求和技术特点进行选择。
b. 学习和掌握所选测试工具的使用方法和技术,以便能够灵活运用。
c. 针对不同的测试需求,选择合适的测试技术,如数据驱动测试、关键字驱动测试等。
2. 制定测试计划:a. 确定测试范围和测试目标,明确要测试的功能和模块。
b. 根据测试目标,制定测试用例和测试数据。
c. 确定测试环境和测试资源,包括硬件、软件、网络等。
d. 制定测试进度和测试资源分配计划。
3. 编写测试脚本:a. 根据测试用例,编写自动化测试脚本。
b. 使用所选测试工具和技术,编写脚本代码,实现自动化测试功能。
c. 脚本编写过程中,要注意代码的可维护性和可扩展性,以便后续维护和更新。
4. 执行自动化测试:a. 在测试环境中,配置好所需的测试资源和测试数据。
b. 执行自动化测试脚本,记录测试结果和日志。
c. 对测试结果进行分析和评估,发现并修复软件缺陷。
5. 定期维护和更新:a. 定期检查和维护自动化测试脚本,确保其正常运行。
b. 针对软件的版本更新和功能变更,及时更新自动化测试脚本,保持其适应性和准确性。
自动化测试方案

自动化测试方案一、背景介绍随着软件开辟的快速发展,传统的手动测试已经无法满足日益复杂的软件系统的测试需求。
为了提高测试效率、降低测试成本、保证软件质量,自动化测试成为了不可或者缺的一环。
本文将针对某个虚拟电商平台的自动化测试需求,提出相应的自动化测试方案。
二、测试目标1. 提高测试效率:通过自动化测试,减少人工测试的时间和工作量,加快测试速度。
2. 提高测试覆盖率:自动化测试可以实现全面覆盖各种测试场景,包括功能测试、性能测试、安全测试等。
3. 提高测试质量:自动化测试可以减少人为因素对测试结果的影响,提高测试的准确性和可靠性。
三、测试工具选择根据虚拟电商平台的特点和需求,我们选择以下自动化测试工具:1. Selenium WebDriver:用于Web应用程序的自动化测试,支持多种浏览器。
2. JUnit:用于编写和执行单元测试用例。
3. Apache JMeter:用于性能测试,摹拟多用户并发访问。
4. Jenkins:用于持续集成和自动化部署。
四、测试用例设计1. 功能测试用例:根据需求文档和用户故事,编写测试用例,覆盖各个功能模块,包括登录、注册、商品浏览、购物车、下单、支付等。
2. 边界测试用例:针对输入的边界值进行测试,验证系统在边界条件下的处理能力。
3. 异常测试用例:摹拟各种异常情况,如输入非法字符、超时、网络异常等,验证系统的容错能力。
4. 性能测试用例:使用Apache JMeter摹拟多用户并发访问,测试系统的性能指标,如响应时间、吞吐量、并发用户数等。
五、测试环境搭建1. 操作系统:选择适合的操作系统,如Windows、Linux等。
2. 浏览器:安装主流的浏览器,如Chrome、Firefox等。
3. 开辟工具:安装Java开辟环境、Eclipse或者IntelliJ IDEA等集成开辟环境。
4. 测试工具:下载并配置Selenium WebDriver、JUnit、Apache JMeter、Jenkins等测试工具。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
功能自动化测试方案目录1前言 (2)1.1文档目的 (2)1.2名词术语 (2)2功能自动化测试实施原则 (3)2.1实施原则 (3)2.2实施功能自动化测试的优缺点 (3)3实施范围和目标 (5)3.1实施范围 (5)3.2实施目标 (5)3.3总体实施策略 (5)4技术方案实施内容 (6)4.1S AHI 的特性和优势: (6)4.2S AHI 的工作原理: (9)4.2.1 第一步:录制 (10)4.2.2 第二步:精炼脚本 (10)4.2.3 第三步:回放 (11)4.3S AHI 的安装部署与配置 (12)5实施管理建议 (20)5.1实施策略建议 (20)5.2人员配置 (20)5.3实施计划 (21)5.4交付物 (21)1前言1.1文档目的功能自动化测试方案是为XXX系统功能测试使用自动化工具,实现以自动化测试为主的目标而编写的技术和实施方案。
文档的主要目的是提供自动化测试的技术方案、实施内容、实施步骤,以及关键的技术实现手段等。
本文的预期读者为测试中心相关人员。
1.2名词术语✧Sahi:是 Tyto Software 旗下的一个基于业务的开源 Web 应用自动化测试工具。
Sahi 运行为一个代理服务器,并通过注入 JavaScript 来访问 Web 页面中的元素。
Sahi 支持 HTTPS 并且独立于 Web 站点,简单小巧却功能强大。
它相对于Selenium 等自动化测试工具,在动态 ID 元素查找和隐式页面等待处理等方面具有一定的优势。
选择 Sahi 工具来实现具体 Web 项目的自动化测试是一个很不错的选择。
✧功能测试:功能测试又称正确性测试,它检查软件的功能是否符合规格说明。
由于正确性是软件最重要的质量因素,所以其测试也最重要。
✧自动化测试:使用商业提供的自动化测试工具或者自己开发的工具对目标系统进行测试。
机器自动执行的测试,替代人完成重复性劳动,但不能完全取代人。
自动化测试需要用到测试工具,测试工程师的参与,自动化测试技术可应用于所有的测试阶段✧Web 测试背景:随着 Web 技术和互联网的发展,Web 应用产品越来越丰富,基于Web 页面测试的需求与日俱增。
在当前全球软件都在追求高效、敏捷的开发模式的大背景下,Web 自动化测试成为了新一波技术探讨和研究的热潮。
因为传统的手工测试不仅效率低,并且测试质量受限于测试人员的一些情绪和心情。
若当一个测试人员带着烦躁情绪来测这些繁杂的大量重复性工作,测试的质量令人担忧。
更何况,当这项测试工作涉及到全球化方面的测试时,多语言版本的测试工作导致该测试工作量的成倍增加,这无疑是一项巨大的考验!✧检查点:用来验证脚本执行结果是否达到预期。
可以在录制的过程中建立检查点,也可以在录制完成之后再建立检查点。
2功能自动化测试实施原则2.1实施原则功能自动化测试过程中工具不可能完成所有的工作,工具仍然是测试过程中的辅助手段。
对于工具主要是解决测试过程中的重复性的工作任务。
另外实施自动化的测试,对被测系统也有更高的要求,总结功能自动化测试的实施原则如下:1)使用自动化工具测试,要求被测系统开发比较稳定,较少发生功能的变更;2)在自动化测试脚本录制前,被测系统的界面相对稳定;3)功能测试自动化要求测试数据环境中的测试数据相对充裕,满足多次重复回归测试的要求;4)要求被测系统的版本运行比较稳定,较少发生测试中止的情况;5)分期分步骤实施,优先选择产品功能比较稳定的系统进行;6)完善的、可复用的数据参数、脚本库是一个长期的积累过程。
2.2实施功能自动化测试的优缺点功能的自动化测试与手工测试虽然有很多局限,但是同样有其优势,随着自动化测试技术和工具的发展,对于比较稳定的产品的功能测试中,自动化测试占有越来越重要的地位。
使用Sahi可以加快整个测试的过程,在产品的版本发布之后,可以重复使用测试脚本进行测试,具体来说:自动化测试的优点:✧提高测试效率,降低测试成本;✧重复性强的手工劳动独立用自动化实现;✧快速的回归测试,提高新版本发布的速度和质量;✧避免人工测试容易犯的错误,如:错误测试,漏测试,多测试等;✧很容易就实现并发性测试;✧测试可重用,采用脚本和数据可以很容易实现重用。
自动化测试的缺点:✧规范的测试管理,测试需求,测试用例;✧不能创造性发现测试脚本没有设计的缺陷;✧高质量的测试用例;✧高素质的自动化测试工程师;✧对测试环境要求比较严格;✧测试需求变化可能引起大量的测试用例,自动测试脚本的修改、维护。
3实施范围和目标3.1实施范围1)工具范围:目前考虑Sahi、Excel等工具的使用和集成;持续集成工具暂时先不考虑;2)系统范围:定位在测试中心基础测试环境中的系统;3)测试阶段的范围:局限在回归测试后期、以及上线后的功能回归测试,目前暂不包括LT、内部测试中的功能测试部分。
3.2实施目标1.功能自动化测试系统应该能完成集成测试、以及上线后功能的回归测试;2.方案目标对有界面和无界面的交易测试都能完成,有界面的交易支持如下方式:a)支持字符终端界面;b)支持B/S的Web界面;c)支持C/S的Windows应用程序界面;3.功能自动化测试方案对目前大部分应用系统都可以进行测试;4.实现自动化脚本录制、自动化脚本执行、自动化缺陷报告和管理。
3.3总体实施策略1.首先从目前系统中选择适合自动化测试的项目和系统;2.其次确定实施功能自动化测试的阶段和时机;3.第三从适合的项目中选择适合自动化测试实施的功能和交易。
具体实施策略参见第6节的实施管理建议。
4技术方案实施内容4.1Sahi 的特性和优势:当提及面向 Web 的自动化测试,相信许多读者会想到或者说使用过 Selenium、Watir 等工具,而对于 Sahi 就可能比较陌生。
首先,让我们先来了解下 Sahi 工具。
它是一款印度公司 Tyto Software 开发的成熟的开源 Web 自动化测试工具。
Sahi 简单易用,能良好支持 Ajax 和 Web2.0 技术,同时适用于敏捷和传统的不同测试模式。
那么,它与其他非常流行的 Web 自动化测试工具有哪些不同和优势呢?让我们将其与主流自动化测试工具 Selenium 和 Watir 来进行一番对比,请参考图 1:图 1. Sahi 与其他工具的对比从上图的对比可以看出,Selenium 支持的脚本语言比较丰富,且自带 Selenium IDE 自动录制工具,Watir 执行的速度相对其他较快。
而 Sahi 同样具备了自带的录制器,且支持几乎所有浏览器,且对 JS 支持较好,拥有页面等待判断机制,内置 Java 异常报告,支持 Ajax 等优势。
下面,本文将详细介绍一下 Sahi 的几大优势。
基于上下文的页面识别机制:大多数如 Selenium 等 Web 自动化测试工具或是自动化框架,都采用类似基于 DOM 的定位策略、Xpath 定位策略和 id、name、identifier 等页面元素定位策略。
Identifier 定位是最普遍的一种定位方式,当不能识别为其它定位方式后,默认为identifier 定位。
在这种策略下,第一个使用 id 的页面元素将被识别出来,如果没有使用指定 id 的元素,那么将识别第一个名字与指定条件相符的元素。
例如,identifier 识别 username 元素的定位策略:identifier=usernameId 定位是在知道元素具体 id 特征的情况下的一种更精确定位。
例如,定位页面元素loginFrom:id=loginFromname 定位方式是去识别第一个匹配名称属性的 UI 元素。
如果多个元素拥有相同的名称属性,可以使用 value 过滤器来进一步优化您的定位策略。
例如,定位页面元素为username:name=usernameXpath 定位是在 XML 中定位元素的方法,而 HTML 可以被看作是 XML 的一种实现。
XPath 扩展了上面 id 和 name 定位方式,提供了绝对路径和相当路径两种查找方式。
绝对路径:html/body/div[1]/div[1]/div[3]/div[1]/form/span/input[1]相对路径查找://div[@id='fm']/form/span/input然而,在实际的情况下,页面元素并非如预期般明确。
一些动态页面的 DOM 树常常随着 Web 产品的更新而频繁改变。
许多的元素值如 ID、Name 等在代码中并不是必须的,常常会缺省。
并且,属性值往往不是唯一对应的,页面中有时会存在相同属性的元素。
当缺省 id 值或是 Xpath 定位失效时,上述这几种查找定位方式往往显得无助和脆弱。
Sahi 采用了一种主动查找的机制,它不受限于特定的元素属性。
在没有 ID、Name 值的情况下,它可以使用一些如“title,value”等属性,这些都是页面可见的属性,所见即所得。
同时,Sahi 会通过传入这些可见可识别的属性值,来按照 Sahi 预设的机制进行查找识别。
Sahi 允许开发者对每一种元素设置不同属性和特定的查找顺序,包括那些自定义的属性名。
所以 Sahi 相对于其他的 Web 自动化测试工具更灵活更开放。
比如,_link(“valueName”)用来定位一个定义为“valueName”的 link,这里的valueName 并不一定是 value 的属性值,也可以是它的 id、title 等。
前面提到了 Sahi 主动查找的机制,那么它是如何去查找 DOM 节点下的特定元素的呢?Sahi 主要提供了三种基于上下文的元素 API:_in,_near 和_under。
从字面意思上,我们不难理解,_in 是指在某个 DOM 节点下查找某个元素,这比 Xpath 的不管是绝对路径或是相对路径查找都来的灵活,不会因为 DOM 树内部结构发生变化而导致路径失效找不到元素的问题。
_near 是指在某个元素附近查找相应设定规则条件的最近一个元素,这对于一个页面中有多个相同属性值的情况提供了一个很好的解决方式,使查找的范围更精确。
_under 是指在某个元素下方开始查找,找到符合条件的最近一个元素,一般_under 都适用在具有相同偏移量的同一列中。
下面,我们来看一个例子,加深对 Sahi 这种基于上下文识别查找机制的理解:图 2. 案例网页假设,在图 2 显示的 Web 页面的所有 text box 的name=”q”,那么,Sahi 的侦探器通过一些标识来鉴别它们,如(_textbox("q"), _textbox("q[1]")和_textbox("q[2]"))。