如果您曾经尝试使用Selenium来自动化Salesforce应用程序,那么您就会知道这将是一个挑战。
Selenium是使浏览器应用程序自动化的出色工具。
但是,Salesforce增加了大多数Web应用程序中没有的额外同谋,例如Shadow DOM,动态IFrame和动态元素。
如果没有具有大量自定义代码的适当框架,则将Salesforce自动化是正确的噩梦。
不过,不用担心,因为我找到了内置了Salesforce自动化支持的免费工具。
动态元素
对于自动化工程师来说,没有什么比带有动态元素的UI烦人的多了,动态元素会在每次运行测试脚本时更改其定位符。
Salesforce开发的应用程序是该部门的惯常行为。
在一次运行中,标识可能是gino1,而在下一运行中,标识可能是gabagool5。更改名称没有任何押韵或理由。
不断变化的名称往往是动态的和不确定的。
所以你会怎么做?您可以开发一个复杂的元素定位器策略,该策略将多个元素堆叠在一起以标识一个字段,但是即使该策略有时也不可靠。
当被测应用程序也具有动态IFrame时,问题将变得更加严重。
内嵌框架
IFrame(也称为嵌入式框架)是嵌入到另一个HTML页面中的HTML文档。
您可以使用IFrame从外部源(如此播客播放器)将内容插入网页:
IFrame棘手,因为Selenium需要识别框架下的元素,这并不总是一件容易的事。
并非每个人都具备针对这种情况进行编码的技能。
Selenium 可以使用驱动程序的方法处理IFrame之间的来回切换 switchTo().frame命令。
代码语言:javascript复制switchTo().frame命令。//存储Web元素WebElement
iframe = driver.findElement(By.cssSelector(“#modal> iframe”));//切换到框架
driver.switchTo().frame(iframe);//现在我们可以单击按钮
很好,但是我发现很少有自动化工程师知道如何使用这些方法来获得最大的可靠性。
除了Iframe,其他可以触发自动化测试的是Shadow DOM。
Shadow DOM
Shadow DOM是构建在软件开发中流行的现代Web组件的趋势之一。
自动执行此操作可能会出现问题,因为此技术允许将隐藏的DOM树与标准DOM中的元素相关联,这意味着许多元素不易用于创建“点击”类型的脚本。
开发人员还经常添加自定义HTML标签。
Selenium无法直接识别自定义Shadow DOM HTML标签。
当然,您可以使用JavascriptExecutor方法来解决某些Shadow DOM / Selenium问题,但是它很繁琐,难以维护,并且给脚本增加了复杂性。
但这又需要额外的努力。您需要将库添加到Maven Pom文件中,并记住要使用的语法。
这样的技术可能会给新的自动化工程师带来负担。
是的,如果有时间,您可以编写解决方案来克服其中的大多数问题。
但是我知道工程师花了很多时间解决这个问题,但仍然失败。
如果有一种免费的测试解决方案可以解决这些问题,该怎么办?
使用TestProject测试Salesforce
TestProject致力于解决与Salesforce自动化相关的许多问题,这些问题也适用于在无代码应用程序中开发的其他应用程序,例如SAP,ServiceNow等。如前所述,您可以先在Selenium中或直接在TestProject中编写自己的编码测试,但并不是每个人都具备这种技能。
另一方面,您可以使用新的记录器在后台为您处理所有这些具有挑战性的自动化方案。
那么,TestProject如何处理我们之前使用诸如Salesforce之类的应用程序解决的上述一些问题?
TestProject如何处理IFrame
在Selenium中,有一个上下文的概念。
TestProject会自动对此进行跟踪,并负责将命令发送到正确的上下文,而无需自己编写代码。
记录器将在使用IFrame的应用程序中记录每个步骤。
执行测试时,它会自动知道切换到正确的iFrame。
无需额外的编码。记录测试的人不必担心。
他们在Selenium和 opium,因此足够聪明地知道无需用户输入即可使用和增强的Selenium API方法。
当我在一个拥有八个冲刺团队的大型企业工作时,他们总是创建不稳定的测试,因为他们不知道如何正确编码来满足测试场景的上下文切换需求。
如果您是中高级自动化工程师,请不要担心-这不是黑盒。
在每个步骤的高级部分,您将看到是否还有其他上下文,例如正在使用的iFrame。
因此,如果您需要随时间调整或更改某些内容,则可以使用高级控制。
TestProject如何处理Shadow DOM
新的TestProject记录器还可以处理在Salesforce和其他应用程序中流行的影子DOM。
使用Shadow DOM,您通常会看到一个元素,而移动鼠标时,您将看到另一个元素。
因此,如果您记录了某些内容,则由于它不再存在,它将在运行时失败。
在大多数情况下,TestProject记录器也会自动为您处理这些情况。
TestProject记录器为您处理幕后的阴影DOM交互,而您无需担心。
TestProject如何处理动态元素
TestProject还简化了针对生成每次运行都会更改的动态元素的应用程序(例如Salesforce中的应用程序)的测试用例记录。
如果要针对Salesforce创建测试,您将很快了解到,被测试的大多数元素都是动态的。
因此,由于所有ID均已更改,因此在运行测试时它将失败。
要查看实际效果,请观看我确实展示了AI记录器如何针对动态值工作的视频。在运行期间,记录器使用AI处理元素ID的任何更改,以识别与之交互的正确字段而不会失败。
为什么要使用TestProject?
如果您知道如何编码,则可以编写任何代码。你想做什么,就可以做什么。如果您做对了,它可能会长期工作。但同样,它确实需要并非每个人都具备的特定技能。而且,如果您自己进行编码,则可能需要花费更多时间才能实现自动化所需的功能。TestProject的人们已经运用了他们所知道的一切来解决棘手的软件(例如Salesforce)的自动化问题,因此您无需担心Shadow DOM,动态元素或弹出窗口之类的问题。
包邮赠书 | 双节同庆 ,Python好书等你选
送书 | Python网络爬虫开发
自动化化测试的局限性
16个初级自动化面试题,你知道不?
什么是数据驱动测试?学习创建框架
如何使用PYTHON抓取新闻文章