专栏首页用户7466307的专栏​如何自动化Salesforce应用程序

​如何自动化Salesforce应用程序

如果您曾经尝试使用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命令。

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抓取新闻文章

本文分享自微信公众号 - 软件测试test(gh_d29759b02f67),作者:Coldrain

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-09-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Selenium 4.0-最新的测试自动化工具

    Selenium是业界领先的测试自动化工具之一,可以最大限度地实现测试自动化的目的。第一个Selenium工具于2004年作为Selenium Core推出。该...

    用户7466307
  • 关于Scrapy爬虫项目运行和调试的小技巧(上篇)

    扫除运行Scrapy爬虫程序的bug之后,现在便可以开始进行编写爬虫逻辑了。在正式开始爬虫编写之前,在这里介绍四种小技巧,可以方便我们操纵和调试爬虫。

    用户7466307
  • 使用Python附加到JSON文件

    JSON的完整形式是JavaScript Object Notation。这意味着将使用编程语言的文本组成的脚本(可执行)文件用于存储和传输数据。Python通...

    用户7466307
  • 投资咕咚背后:影视娱乐体育领域将再诞生一个新的“分众传媒”

    不讲故事,不再收购,几乎不开发布会的分众传媒,近日破天荒在北京万达索菲特酒店开了一场别致的战略合作发布会,宣布成立体育基金,以3000万美元领投中国最大的运动社...

    罗超频道
  • 局部自适应自动色阶/对比度算法在图像增强上的应用。

        在限制对比度自适应直方图均衡化算法原理、实现及效果一文中针对全局直方图均衡化的一些缺点,提出了分块的自适应均衡化技术,很好的克服了全局直方图均衡化的一些...

    用户1138785
  • ShardingJdbc分库分表实战案例解析(上)

    在对诸如订单、交易、支付等实时在线业务系统的研发、维护过程中,随着业务量的快速增长,我们经常会遇到由于关系型数据库(如:MySql)单表数据量增长过大而引发的线...

    用户5927304
  • 如何一步一步用DDD设计一个电商网站(十二)—— 提交并生成订单

    之前的十一篇把用户购买商品并提交订单整个流程上的中间环节都过了一遍。现在来到了这最后一个环节,提交订单。单从业务上看,这个动作的背后包含了多个业务操作,根据用...

    Zachary_ZF
  • 如何一步一步用DDD设计一个电商网站(十三)—— 领域事件扩展

    上篇中我们初步运用了领域事件,其中还有一些问题我们没有解决,所以实现是不健壮的,下面先来回顾一下。

    Zachary_ZF
  • WPF中ListView如何改变选中条背景颜色

    先上图 ? 解决方法: <ListView ...> <ListView.ItemContainerStyle> <Style Targ...

    hbbliyong
  • Spring系列第7篇:依赖注入之手动注入

    通常情况下,系统中类和类之间是有依赖关系的,如果一个类对外提供的功能需要通过调用其他类的方法来实现的时候,说明这两个类之间存在依赖关系,如:

    路人甲Java

扫码关注云+社区

领取腾讯云代金券