提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
原创|行业资讯|编辑:郑恭琳|2020-06-08 14:47:53.260|阅读 272 次
概述:UI记录工具可能令人沮丧,但不一定如此。通过一些快速的技巧和窍门,可以减轻边缘情况的麻烦,使您能够更轻松地扩展UI测试自动化。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
相关链接:
UI记录工具可能令人沮丧,但不一定如此。通过一些快速的技巧和窍门,可以减轻边缘情况的麻烦,使您能够更轻松地扩展UI测试自动化。
测试人员采用测试自动化(尤其是UI测试自动化)来加快重复的测试动作,并将手动工作集中在发现新的有趣问题上。借助UI测试自动化,您可以定义应用程序要采用的不同路径,并且机器可以以连续且自动化的方式验证应用程序,而无需人工完成。
建立自动化测试的主要方法是编写代码。这可能是不幸的,因为知道如何手工遍历应用程序的测试人员必须学习如何使用诸如Selenium之类的框架来编写代码,或者使用诸如UFT之类的专有工具来创建一个自动工作流,以反映他们正在手动执行的工作流。由于代码本质上容易出错,并且编写自动化测试可能需要相当复杂的技能,因此这可能会很快成为挑战。
为了缓解挑战,许多工具(包括的UI测试自动化工具)都具有记录和播放Web场景的功能。这些工具从理论上讲很棒,但是一个很大的问题是大多数记录器在80%的时间内都无法记录和回放准确的场景。这是一个不幸的现实,但是隧道尽头有光明。这是所有录制工具面临的一些常见挑战,以及可以用来解决这些问题的一些技巧。
Web应用程序行为的不一致是录制和播放技术将面临的首要挑战,并且很难克服。发生这种情况的几种不同原因,以及一些可以帮助您诊断和潜在解决问题的技术。
问题1:即使您不知道该应用程序的状态,该应用程序仍处于特定状态。
软件开发人员使用浏览器cookie来存储Web应用程序特定用户的会话信息,或跟踪相关应用程序之间的会话。Cookies可用于检索有关用户的信息,而无需将信息存储在后端系统中。Cookie记录数据,例如用户的浏览器以前访问过该Web应用程序的事实,或有关用户当前会话的信息。
出于自动化目的,现有的cookie可能容易引起问题。诸如Selenium之类的测试自动化框架通常以“干净”状态启动浏览器,其中已删除所有cookie。如果您录制的测试中存在Cookie,则该Web应用程序在播放过程中的行为将与录制时不同,并且录制的测试可能会失败。
一个示例是存储在Cookie中的会话数据,该数据允许用户在浏览器会话之间保持登录到Web应用程序的状态。如果您已经登录就开始记录,则记录的测试用例中不会捕获任何登录信息。在播放期间,将不存在任何cookie,因此应用程序将立即转到登录页面,并且测试将失败。
当元素在回放过程中出现在页面上而在录制过程中没有出现时,会发生同样的问题。许多网络应用程序会在用户首次访问时显示通知,例如有关应用程序使用Cookie的GDPR通知,或显示特殊交易、销售或新闻简报注册机会的弹出式div。在这种情况下,录制的场景的回放将失败,因为在录制过程中没有出现其他页面元素,因此测试不知道如何与其他元素进行交互。
这是减轻麻烦的方法......
解决方案:以隐身/私人模式录制和播放
可以将大多数浏览器设置为以隐身/私有模式启动。在此模式下运行时,Cookie和配置文件信息将被删除,因此该Web应用程序的行为就像您第一次访问时一样,并且您尚未登录。使用以隐身/私有模式启动的浏览器记录您的测试方案,并且您将为记录的测试方案提供一个干净的基准。在Chrome中,设置如下所示:
创建测试脚本后,通常可以允许它以正常模式播放。但是,在某些情况下,以隐身/私人模式播放可能会有所帮助。一个示例就是一个Web应用程序,它使用您当前的位置来自定义页面上的体验。我发现有些情况下,在硒测试的回放过程中检索到的当前位置与录制过程中检索到的位置有所不同(我不确定为什么)。以隐身/私人模式播放将阻止浏览器获取您的当前位置,并稳定您的测试场景。在Selenium中,您可以指示以隐身/私有模式进行播放-查看这些方便的Chrome和Firefox链接。
解决方案:设置特定的Cookie
如果您需要适当的cookie以确保在特定状态下以Web应用程序开始播放,这可能会很有用。这是一篇很棒的论坛帖子,概述了在播放时捕获和设置特定Cookie的过程。
问题2:更改屏幕尺寸
响应式Web设计的现代Web应用程序开发实践在自动测试创建过程中引起了问题。为了使Web应用程序可同时在移动设备和台式机上使用,开发人员创建了响应式应用程序,该应用程序根据屏幕尺寸而变化。当您调整窗口大小并且UI完全更改时,您会看到此信息。想象一下这对自动化测试有何作用!
如果您在最大化的窗口中记录测试,然后在一半大小的窗口中进行回放,则由于浏览器大小的不同,页面元素可能会被隐藏或遮盖。当播放机上的分辨率与录制机上的分辨率不同时,也会发生类似的效果。无论哪种方式,它都会对您的测试自动化产生很大影响。
这是减轻麻烦的方法......
解决方案:最大化浏览器的播放效果
您可以使用Selenium命令来最大化浏览器的大小:
driver.manage().window().maximize();
options.addArguments("start-maximized”)
最大化浏览器可确保页面全尺寸,并且在页面上为该配置安排了元素。假设您以最大的屏幕尺寸进行录制,即使进行播放的机器使用不同的分辨率,录制和播放之间的元素通常也会保持一致。
作为人类,当我使用Web应用程序时,我会寻找特定的元素,并在这些元素“就绪”时与它们交互。在自动化测试中,机器要知道什么时候该做什么与什么时候该去做比较困难。
自动化测试工具将测试场景作为一系列步骤来执行。例如,在针对Amazon执行购物车测试时,下一步可能是将商品添加到购物车,然后单击购物车按钮。问题在于,添加商品后,购物车按钮可能无法立即使用,并且图标可能会立即更改。测试脚本需要确切地知道要等待的正确时间,或者要前进的条件。测试中处理此问题的配置通常称为“等待条件”。记录员很难理解要在测试脚本中创建哪些等待条件,因此您必须在测试中手动构建复杂的等待条件。
这是减轻麻烦的方法......
解决方案:使用显式等待
显式等待是在单个元素上设置的等待条件,指示Selenium WebDriver等待直到满足特定条件——例如等待元素在页面上出现或可见。等待条件指定等待条件满足的最长时间。
每当测试尝试查找元素时,请使用显式等待。如果根本没有使用任何等待条件,那么如果元素没有立即以正确的状态出现,则测试将失败。Selenium WebDriver还支持隐式等待条件,该条件在整个测试场景中全局设置,并在测试尝试查找元素时使用。但是,不建议隐式等待。有关显式和隐式等待,请参见Selenium文档。
使用显式等待时,Selenium可能会引发异常,从而中断等待条件-但实际上您希望在这些情况下继续等待条件。您可以通过配置显式等待来忽略特定异常来处理此问题。需要忽略的一些常见异常是NoSuchElementException,StaleElementReferenceException和ElementClickInterceptedException。
这是忽略这些异常之一的显式等待的一个好例子:
WebDriverWait wait = new WebDriverWait(driver, DEFAULT_WAIT_FOR_ELEMENT_TIMEOUT);
wait.ignoring(StaleElementReferenceException.class);
wait.until(ExpectedConditions.elementToBeClickable(element);
Web应用程序记录器试图为记录的测试中引用的每个页面元素构建一个良好的元素定位器,但是在许多情况下,记录下来的定位器并不理想。例如,记录的定位器可能会引用每次访问页面时都会更改的动态信息,或者在以后修改页面的不相关部分时容易产生中断。
常见的示例可能是:
<div id="gwt-uid-198">Click here for more info</div>
<a href="/logout.jsp">Logout user (bob)</a>
这是减轻麻烦的方法......
解决方案:创建智能定位器
识别包含动态信息的元素定位器通常非常容易。当您回放录制的场景时,这些定位器将失败,因为它们所依赖的动态信息是不同的。要处理这些情况,您需要找到可在元素定位器中使用的页面元素的唯一标识属性,而不是已记录的动态属性。
一种方法是在浏览器中手动导航到该元素出现的页面,然后右键单击该元素并选择菜单选项以检查该元素(在Chrome中称为Inspect,在Firefox中称为Inspect Element)。这将带您进入DOM结构,该结构将允许您查看该元素的基础DOM和HTML代码。在此视图中,您可以标识用来标识元素的其他属性。要查找的常见属性是“类”、“名称”、“标题”和“ alt”,但是这些属性也可能是动态的,您应该选择一个或多个唯一标识元素的属性。在某些情况下,可以在父元素上找到最能唯一地标识元素的属性,因此您可能需要创建相对xpath,例如:
//div[@class=’actionButton’]/button
另一种方法是使用工具,该工具可以为您提供各种定位器选项,您可以从中选择一个,然后根据需要进行调整。想到的一些特定工具是SeleniumIDE和TruePath,它们两者都可以创建可用于标识元素的多个不同的定位器。您可以按原样使用定位器,也可以选择一个定位器并对其进行修改以适合您的需求。
第三种选择是使用,以在测试由于定位器损坏或运行时损坏的定位器自愈而失败时生成更好的定位器建议。将使用来自先前测试执行的历史数据以及有关页面当前状态的信息来建议您可以使用的一组不同的定位器,以及对每个定位器的信心。
除了我已经提到的内容之外,从记录创建测试方案时还会出现许多其他常见情况。以下是一些其他技巧,可以使使用UI录制工具的麻烦减轻。
记录悬停动作
传统上,记录和播放工具很难捕获用户将鼠标置于另一个元素上时出现的页面元素。通常不会记录悬停操作,但是会记录与出现的元素的交互。运行测试方案时,不会发生悬停操作,并且测试方案中定义的下一页元素将永远不会出现——这会使测试失败。
为了减轻这种麻烦,请在记录过程中注意悬停动作显示其他元素的位置,当您看到其中一种情况时,请单击该元素,而不是简单地将其悬停在该元素上。这将导致单击操作被记录到该页面元素的测试中。如果要使测试悬停而不是单击元素,请在事实之后将测试中的单击动作更改为悬停动作。这是一篇可以帮助您解决此问题的文章。
滚动
录制时,您经常需要滚动页面元素使其进入视图以与其进行交互。录制工具通常不录制滚动操作,并且不需要,因为Selenium通常会为您处理滚动。但是,在某些情况下,当回放测试时,Selenium不会将页面元素滚动到视图中,并且测试将失败,因为该元素不可见。为了减轻这种麻烦,请稍后使用JavaScript执行程序手动添加滚动交互。这是一篇很棒的文章,可以帮助您逐步理解。
未记录某些动作
在录制时,元素有时会不被录制。通常,这是由于UI框架以独特的方式构建页面上的元素。
为了减轻这种麻烦,请在记录时跟踪您正在Web应用程序上执行的特定操作。录制后,在Selenium脚本中标识应该执行的操作并将其手动添加。您可以通过在浏览器中导航到缺少操作的页面来标识要使用的定位器,然后使用前面提到的浏览器扩展之一捕获定位器并将其手动放入测试中。
使用UI录制工具创建测试场景可能会很麻烦,但这不是必须的。利用这些技术,您可以成功进行UI测试自动化实践。祝测试愉快!
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn
通过提供强大的3D CAD数据访问工具并适用于桌面、移动和Web的高级环境3D可视化发动机,HOOPS在提升造船设计和制造流程的效率方面发挥了重要作用。
HOOPS Luminate在汽车行业中的应用具有广泛的潜力和深远的影响。它通过提供高效的3D可视化、虚拟装配与拆解、性能分析、客户定制等功能,帮助汽车制造商在设计、生产和销售过程中提升效率、降低成本并提高产品质量。
在不断发展的软件开发世界中,使工具和框架与最新的平台版本保持同步至关重要,欢迎查阅~
全球航运业对国际贸易至关重要,全球 90% 以上的商品通过海运运输。准确监控和控制这些集装箱的移动对于维持高效的供应链至关重要。手动输入集装箱号码是这一程序的关键部分,它带来了相当大的挑战,例如人为错误和效率低下。
针对 C/C++ 软件开发提供统一、完全集成的测试解决方案。
Parasoft Jtest用于应用软件开发的集成Java测试工具
Parasoft dotTEST降低C#和VB.NET开发风险,有效地实现符合C#和.NET开发的测试工具的要求
Parasoft Insure++针对C和C++应用程序的运行时内存泄漏检测和内存调试
Parasoft SOAtest人工智能和机器学习赋能 API 和 Web 服务测试
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@pclwef.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢