操作提示与技巧:使用Selenium测试Salesforce企业应用程序

原创|使用教程|编辑:郑恭琳|2020-10-16 10:30:44.710|阅读 16 次

概述:Salesforce允许开发人员以抽象的方式定义其业务逻辑和UI元素,以便Salesforce可以在页面上实现这些元素。这种灵活性是以牺牲UI测试自动化为代价的,因为开发人员无法直接控制浏览器中的最终内容。众所周知,使用诸如Selenium之类的开源自动化框架很难测试Salesforce企业应用程序。让我们探讨一些难以测试Salesforce Enterprise应用程序的原因以及如何解决这些问题。

# 正版采购狂欢节,企业采购正当时 # # 31款JAVA开发必备控件和工具 #

相关链接:

Salesforce近年来已成为主导的CRM平台,在2018全球市场份额为19.5。这是最接近的替代SAP的两倍以上,是Oracle的三倍以上。成功来自以其自己的Apex面向对象编程语言和Lightning Web Component框架为目标的企业应用程序开发。

Salesforce允许开发人员以抽象的方式定义其业务逻辑和UI元素,以便Salesforce可以在页面上实现这些元素。这种灵活性是以牺牲UI测试自动化为代价的,因为开发人员无法直接控制浏览器中的最终内容。众所周知,使用诸如Selenium之类的开源自动化框架很难测试Salesforce企业应用程序。让我们探讨一些难以测试Salesforce Enterprise应用程序的原因以及如何解决这些问题。


测试Salesforce企业应用程序的挑战

元素标识符是定位和自动进行与Selenium的网页交互的一种常用方法。Selenium中的@FindBy批注具有一个简单的id=something”属性,可通过页面上的唯一ID来定位Web元素。

非典型元素标识符

Salesforce应用程序中的元素标识符看起来很奇怪:例如,id=940:1376;a”。更糟糕的是,这些标识符在页面访问之间随机变化。这使得标识符对测试自动化毫无用处。在下面的示例中,请考虑当每次测试运行ID更改时,Selenium测试应如何定位<input>元素。

非典型元素标识符

提示与技巧

<input>元素没有其他唯一定义的属性。幸运的是,Salesforce符合最新的Web可访问性准则。 WCAG关于信息和关系的第1.3.1节要求通过将标签的“for”属性与输入的“id”属性相匹配,将人类可读的<label>元素与代码中的相应<input>关联。元素标识符可能会在每次加载页面时更改,但标签文本应始终相同。

在此示例中,Company Name”文本包含在具有属性for=940:1376;a”的<label>内,该文本恰好与<input>元素上的标识符匹配。Selenium测试可以使用聪明的XPath建立从标签文本到输入元素的连接://input[@id=//label[normalize-space(.)=Company Name]/@for]

XPath使用“id”属性等于显示“Company Name”的<label>的“for”属性来查找页面上的任何<input>元素。在本示例中,normalize-space(.) XPath函数消除了文本中多余的空格,该空格被包裹在<label>元素内的<span>内。它使Selenium测试看起来更加复杂,但是可以完成工作。

测试Salesforce Enterprise Apps的技巧

缓慢的云端托管企业应用程序

尽管名称为Lightning”,但是Salesforce的云托管企业应用程序有时可能会非常慢。测试自动化工程师熟悉响应速度可能很慢的应用程序所带来的挑战。如果测试脚本尝试在应用程序准备就绪之前执行下一步,它将失败。

对测试延迟几秒钟的硬编码可能会比大多数时候所需的时间暂停更长的时间,并增加了测试运行的总时间。为了延迟足够长的时间,等待必须是有条件的。通过在页面上渲染加载叠加蒙版,Salesforce使得难以使用典型的Selenium流利等待条件。

加载覆盖蒙版

Selenium具有对动态等待条件的内置支持。它每秒检查几次元素是否存在或可点击性-直到出现错误之前最多要花费最长时间。问题在于Selenium的内置等待条件都无法处理Salesforce中的加载叠加。Selenium检测到加载面罩下的元素确实存在并且未被禁用。它停止等待并尝试单击它。这导致异常,因为点击被加载叠加层拦截。

由于加载叠加层而导致的异常

提示与技巧

并非所有希望都消失了。Selenium代码的另外几行使得捕获此单击拦截的异常并使用相同的等待循环和超时重试成为可能。

测试Salesforce Enterprise Apps的提示

记住并重新初始化Lightning UI组件

UI测试自动化方面的另一个棘手问题是,Salesforce记住上次打开哪个Lightning UI组件,并在登录时重新初始化最后一个已知状态。这意味着可用于测试的初始页面布局可能会根据保存的历史记录进行更改。

提示与技巧

减少先前状态影响的一种方法是测试隐身启动浏览器。通过在测试类的设置方法中传递选项,Selenium使得使用Google Chrome浏览器更容易做到这一点。

测试Salesforce Enterprise Apps的提示

此处显示的其他选项使浏览器提示无法与Salesforce共享位置,因为Selenium测试可能会在播放期间卡在此权限提示上。最大化浏览器窗口可在屏幕上显示更多元素。它还减少了测试在单击元素之前滚动到元素的需要。如果测试仍然需要滚动到页面下方的某个元素,则Selenium可以执行此JavaScript命令来完成此操作。


使用Selenium自动UI测试来测试Salesforce Enterprise应用程序的好处

这些提示和技巧使使用Selenium进行Salesforce企业应用程序的自动UI测试变得切实可行。测试自动化是更改企业应用程序中的业务逻辑或Web组件后快速检测回归的一种重要方法。Salesforce本身每年还会发布几次更改。一套Selenium测试是在正式投入生产之前快速检查沙盒中最新Salesforce更新兼容性的一种好方法。

使用AI技术增强Selenium自动化的UI测试

如果您自己将这些技巧付诸实践似乎工作太多,请考虑使用Parasoft Selenic有效地自动执行Selenium测试创建并简化测试维护。使用Selenic,您可以在浏览器中记录与Salesforce企业应用程序的交互。然后轻松创建利用所有这些相同技术的Selenium测试类。

Parasoft Selenic的集成Recorder提供了应用程序选择,因此您可以选择在记录UI操作时收集Salesforce特定的属性。然后,Selenic在创建Selenium UI测试时会合并这些属性,并使用AI技术对由于定位器或等待条件的更改而中断的测试应用自我修复。要了解更多信息,请查看Selenic视频并下载免费试用版




标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,尊重他人劳动成果

登录 慧都网发表评论


暂无评论...

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
相关厂商
相关产品
Parasoft C/C++test

针对C/C++开发的专业白盒自动化测试方案,能有效提高软件开发效率和代码质量。

Parasoft Jtest

专业针对Java语言的开发测试方案,可无缝集成Parasoft SOAtest

Parasoft dotTEST

使用深度静态分析和高级覆盖率分析补充现有的Visual Studio工具

Parasoft Insure++

Parasoft Insure++是专用于 C 和 C++ 语言的运行时内存分析和错误检测工具。

Parasoft SOAtest

业内最全面的API、云服务和SOA测试平台,提供优秀的负载与性能测试、API安全测试等功能

Parasoft Virtualize

用于创建、部署和管理模拟的开发与测试环境的虚拟解决方案

Development Testing Platform(DTP)

开发测试平台,通过在SDLC中持续应用软件质量最佳实践降低了商务风险

Parasoft SOAtest with Load Test

通过使用现有的功能测试来解锁早期的负载和性能测试

在线
客服
咨询
电话
400-700-1020
在线
QQ
购物车 反馈 返回
顶部
在线客服系统
live chat