App下載

如何加速 Selenium 測試用例?

涼水參合 2021-09-07 10:03:56 瀏覽數(shù) (2692)
反饋

當我們談論自動化時,首先想到的工具之一是 Selenium。我們都知道Selenium WebDriver 是一個出色的 Web 自動化工具。實施Selenium 自動化測試的主要原因是加速 selenium 測試。在大多數(shù)情況下,Selenium 的性能比手動的要好得多。但是,有時自動化腳本通常運行速度較慢。集成和單元測試比 Selenium 測試要快得多。有時,單個測試需要幾分鐘才能運行,當它們的數(shù)量更多時,速度會更慢,因為很難獲得準確和更快的反饋。但是,你始終可以使用最好的selenium 測試自動化方法來加速selenium 測試。

如何更快地執(zhí)行 Selenium 測試用例?

測試人員可以采用多種方法來加速 Selenium 測試用例。你可以考慮使用顯式等待、Web 定位器、更喜歡不同的瀏覽器、優(yōu)化 Selenium 基礎架構,并考慮其他用于增強軟件性能的最佳實踐。由于最終產(chǎn)品中有如此多的更新,因此維護 Selenium 測試用例的過程變得繁瑣。因此,我們不能忽視 Selenium 測試用例的性能;相反,我們應該專注于從初始階段加速它們。Selenium 測試用例在任何給定場景中的關鍵任務是:

  • 使用 Selenium Webdriver(本地/遠程)打開測試中的 URL
  • 利用相關的網(wǎng)頁定位器,定位網(wǎng)頁元素
  • 對被測頁面上的定位 Web 元素執(zhí)行斷言
  • 釋放 WebDriver 使用的資源

讓我們重點介紹一些方法來了解如何加速 selenium 測試。

Selenium 自動化中的并行測試

這是加快 Selenium 測試用例的最簡單方法之一。并行測試允許您在不同的設備瀏覽器組合和操作系統(tǒng)配置上同時執(zhí)行多個測試,立即覆蓋整個測試套件。如果您擁有內部 Selenium Grid 基礎設施,您可以隨時查看 Selenium Grid 4 的優(yōu)勢,并了解它在加快 Selenium 測試用例速度方面所提供的功能。讓我們假設您有十個測試要運行。如果您在不同的設備上運行它們,則所有十個測試都可以在 10 秒內完成,而不是 100 秒。您可以在類和方法級別選擇此方法。對測試場景進行分組、參數(shù)化和基于云的選項將進一步加強該過程。

A. 分組測試:

測試套件中的多個測試方法和測試文件使實現(xiàn)變得困難。如果我們根據(jù)被測功能的類型對測試場景進行分組,則可以輕松管理任何新出現(xiàn)的復雜性。

B. 用 Selenium 4 替換 Selenium 3:

隨著Selenium 4的發(fā)布,Selenium有了顯著的改進. 它配備了優(yōu)化的 Selenium Grid、標準化的 Selenium Webdriver 萬維網(wǎng)聯(lián)盟 (W3C)、增強的 Selenium 4 IDE,此外,它還引入了 Chrome Web Tools 和相關定位器。這些改進可以顯著加快 Selenium 測試。如果我們比較 Selenium 3 和 4,我們會發(fā)現(xiàn)前者使用 JSON 有線協(xié)議進行瀏覽器和測試代碼之間的交互,這導致了通過 W3C 加密和解碼多個 API 請求的額外負擔。但后者使用 WebDriver W3C 協(xié)議,可加速 Web 瀏覽器和測試代碼之間的交互。新引入的 Selenium 4 相對定位器,如 – ?'above' ?、?'below'?、?'to_left_of'?、?'to_right_of'?、?'near'?,加速了 Selenium 測試用例并提高了它們的整體穩(wěn)定性。還,

C.  基于云的 selenium網(wǎng)格:

每當您想要測試必須跨多個瀏覽器-操作系統(tǒng)-設備組合運行許多并行測試的大型 Web 應用程序時,你將需要一個基于云的 Selenium Grid 來執(zhí)行和加速 Selenium 測試用例。下面是 Selenium Grid 的圖示。

選擇相關的網(wǎng)站定位器

Web 定位器是任何 Selenium 測試場景中不可或缺的部分。定位網(wǎng)絡元素后,需要一個合適的網(wǎng)絡定位器來進一步發(fā)揮作用。在眾多可用選項中,始終建議使用速度更快的網(wǎng)絡定位器。在所有網(wǎng)絡定位器中,ID 定位器是 Selenium WebDriver 中最快的。讓我們簡要討論一些最常用的網(wǎng)絡定位器:

A. ID 定位器:它使用與所有瀏覽器相關的?document.getElementById() javascript? 命令運行速度最快。在許多唯一元素持續(xù)存在的情況下,此命令會生成第一個唯一匹配項。只有當 HTML 元素具有對頁面上的每個元素都是唯一的 ID 屬性時,它才起作用。在執(zhí)行速度方面,在 ID 之后,Name、CSS Selector 和 XPath 分別是最快的。

B. 名稱選擇器:當 WebElement 中沒有 ID 時,使用名稱選擇器 Web 定位器。

C. CSS Selector:如果 WebElement 沒有 ID 或 NAME 屬性,在這種情況下選擇 CSS Selector Web locator 是合適的。CSS 在大多數(shù)常見的 Web 瀏覽器中通常沒有什么不同,并且使用 Selenium 中的 CSS 選擇器確保 CSS 引擎的更好性能。使用此 Web 定位器的優(yōu)勢是更快的元素識別、降低瀏覽器不兼容性和減少測試執(zhí)行。與 XPath 相比,在 Internet Explorer 等傳統(tǒng) Web 瀏覽器的情況下首選 CSS 定位器,以提供更好的明確性。

D. XPath: XPath Selector 是最靈活的 Web 定位器,但它是最快的四個定位器中最慢的,因為必須跨越路徑的每一層才能選擇特定的 Web 元素并從一個瀏覽器移動到另一個瀏覽器。使用 XPath 定位器不應該是主要選擇,而應該僅在這是剩下的唯一選項時才使用。

  • 使用少量 Web 定位器:將Web 定位器的數(shù)量保持在最低限度,可以提高測試腳本的可讀性,從而減少 Selenium 腳本的執(zhí)行時間。
  • Explicit Waits:用于自動化測試的 Explicitwait 命令將消除任何減速,并允許您執(zhí)行等待條件,例如 Element 可見、Element 是可點擊的、Element 是可選的頁面 Web 元素,這在 Selenium 中的隱式等待的情況下是不可能的. 例如,當標識的元素可點擊時,ToBeClickable 方法會生成一個 WebElement。一旦條件滿足,顯式等待就會撤退。這意味著元素作為結果返回并且不會等待整個持續(xù)時間。下面的代碼片段顯示了 ID = element 的 WebElement 在 6 秒內定位。在其位置之后,顯式等待退出,并返回所需的 WebElement。

利用顯式等待的測試腳本展示了更好的性能。

  • 創(chuàng)建原子腳本:通過簡化復雜場景來創(chuàng)建獨立的測試用例使 Selenium 測試高效。像 TestNG 這樣的框架支持測試方法之間的顯式測試依賴關系,而原子測試可以輕松檢測到故障,這減少了測試時間和維護工作,最大限度地減少了測試依賴關系,并加速了 Selenium 測試。
  • 禁用網(wǎng)頁上的圖像以加快頁面加載速度:創(chuàng)建 Selenium 實例后,您可以使用 driver.get() 方法打開被測頁面。許多網(wǎng)頁內容豐富,由許多圖像組成,導致頁面加載速度變慢。但是可以通過使用瀏覽器相關設置禁用圖像加載來加快頁面加載速度。

下面的快照顯示:

 如何在Chrome中使用 Selenium 腳本禁用頁面加載以加快 Selenium 測試用例和頁面加載。

如何在Firefox 中使用 Selenium 腳本禁用頁面加載以加快 Selenium 測試:

在這種情況下,圖像加載在 Amazon 電子商務網(wǎng)站中控制,其中 Firefox 首選項設置為 2,使用 permissions.default.image。

  • 參數(shù)化的數(shù)據(jù)驅動測試:讓我們來看看如何使用?Parameterization?加速 selenium 測試。當涉及針對大量數(shù)據(jù)集進行測試,并在不同的測試輸入上運行相同的測試時。參數(shù)化被證明是一個很好的選擇。大多數(shù)自動化框架都很好地支持參數(shù)化,例如 ?TestNG(Selenium Java)?、?JUnit?、?NUnit(C#)?、?PyTest( Selenium Python )? 等。
  • 使用無頭瀏覽器/驅動程序:無頭瀏覽器允許我們在沒有瀏覽器圖形用戶界面 (GUI) 的情況下執(zhí)行瀏覽器用戶界面 (UI) 測試。它還有助于提高在后臺運行的跨瀏覽器測試的效率。如果怒不想了解通過測試腳本收到的 UI 交互,則不需要此最佳實踐。一些常見的無頭瀏覽器是 ?HtmlUnit?、?Splash?、?PhantomJS ?等。在 ?PhantomJS ?驅動程序的上下文中查看 Selenium 瀏覽器測試的性能。

結論

Selenium 測試執(zhí)行的速度對業(yè)務至關重要。即使它們很慢,也有很多方法可以加速硒測試。上述最佳實踐有助于加速 Selenium 測試、加速和減少測試時間。在持續(xù)測試中及早發(fā)現(xiàn)錯誤可以更快地解決問題,從而提高測試性能并提高產(chǎn)品質量。


0 人點贊