原創|使用教程|編輯:鄭恭琳|2020-10-16 10:30:44.710|閱讀 477 次
概述:Salesforce允許開發人員以抽象的方式定義其業務邏輯和UI元素,以便Salesforce可以在頁面上實現這些元素。這種靈活性是以犧牲UI測試自動化為代價的,因為開發人員無法直接控制瀏覽器中的最終內容。眾所周知,使用諸如Selenium之類的開源自動化框架很難測試Salesforce企業應用程序。讓我們探討一些難以測試Salesforce Enterprise應用程序的原因以及如何解決這些問題。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
Salesforce近年來已成為主導的CRM平臺,在2018年全球市場份額為19.5%。這是最接近的替代SAP的兩倍以上,是Oracle的三倍以上。成功來自以其自己的Apex面向對象編程語言和Lightning Web Component框架為目標的企業應用程序開發。
Salesforce允許開發人員以抽象的方式定義其業務邏輯和UI元素,以便Salesforce可以在頁面上實現這些元素。這種靈活性是以犧牲UI測試自動化為代價的,因為開發人員無法直接控制瀏覽器中的最終內容。眾所周知,使用諸如Selenium之類的開源自動化框架很難測試Salesforce企業應用程序。讓我們探討一些難以測試Salesforce Enterprise應用程序的原因以及如何解決這些問題。
元素標識符是定位和自動進行與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測試看起來更加復雜,但是可以完成工作。
緩慢的云端托管企業應用程序
盡管名稱為“Lightning”,但是Salesforce的云托管企業應用程序有時可能會非常慢。測試自動化工程師熟悉響應速度可能很慢的應用程序所帶來的挑戰。如果測試腳本嘗試在應用程序準備就緒之前執行下一步,它將失敗。
對測試延遲幾秒鐘的硬編碼可能會比大多數時候所需的時間暫停更長的時間,并增加了測試運行的總時間。為了延遲足夠長的時間,等待必須是有條件的。通過在頁面上渲染加載疊加蒙版,Salesforce使得難以使用典型的Selenium流利等待條件。
Selenium具有對動態等待條件的內置支持。它每秒檢查幾次元素是否存在或可點擊性-直到出現錯誤之前最多要花費最長時間。問題在于Selenium的內置等待條件都無法處理Salesforce中的加載疊加。Selenium檢測到加載面罩下的元素確實存在并且未被禁用。它停止等待并嘗試單擊它。這導致異常,因為點擊被加載疊加層攔截。
提示與技巧
并非所有希望都消失了。Selenium代碼的另外幾行使得捕獲此單擊攔截的異常并使用相同的等待循環和超時重試成為可能。
記住并重新初始化Lightning UI組件
UI測試自動化方面的另一個棘手問題是,Salesforce記住上次打開哪個Lightning UI組件,并在登錄時重新初始化最后一個已知狀態。這意味著可用于測試的初始頁面布局可能會根據保存的歷史記錄進行更改。
提示與技巧
減少先前狀態影響的一種方法是測試隱身啟動瀏覽器。通過在測試類的設置方法中傳遞選項,Selenium使得使用Google Chrome瀏覽器更容易做到這一點。
此處顯示的其他選項使瀏覽器提示無法與Salesforce共享位置,因為Selenium測試可能會在播放期間卡在此權限提示上。最大化瀏覽器窗口可在屏幕上顯示更多元素。它還減少了測試在單擊元素之前滾動到元素的需要。如果測試仍然需要滾動到頁面下方的某個元素,則Selenium可以執行此JavaScript命令來完成此操作。
使用Selenium自動UI測試來測試Salesforce Enterprise應用程序的好處
這些提示和技巧使使用Selenium進行Salesforce企業應用程序的自動UI測試變得切實可行。測試自動化是更改企業應用程序中的業務邏輯或Web組件后快速檢測回歸的一種重要方法。Salesforce本身每年還會發布幾次更改。一套Selenium測試是在正式投入生產之前快速檢查沙盒中最新Salesforce更新兼容性的一種好方法。
使用AI技術增強Selenium自動化的UI測試
如果您自己將這些技巧付諸實踐似乎工作太多,請考慮使用有效地自動執行Selenium測試創建并簡化測試維護。使用,您可以在瀏覽器中記錄與Salesforce企業應用程序的交互。然后輕松創建利用所有這些相同技術的Selenium測試類。
的集成Recorder提供了應用程序選擇,因此您可以選擇在記錄UI操作時收集Salesforce特定的屬性。然后,在創建Selenium UI測試時會合并這些屬性,并使用AI技術對由于定位器或等待條件的更改而中斷的測試應用自我修復。要了解更多信息,請查看Selenic視頻并下載。
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn