App下載

如何加速 Selenium 測試用例?

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

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

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

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

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

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

Selenium 自動化中的并行測試

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

A. 分組測試:

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

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 和相關(guān)定位器。這些改進可以顯著加快 Selenium 測試。如果我們比較 Selenium 3 和 4,我們會發(fā)現(xiàn)前者使用 JSON 有線協(xié)議進行瀏覽器和測試代碼之間的交互,這導(dǎo)致了通過 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)-設(shè)備組合運行許多并行測試的大型 Web 應(yīng)用程序時,你將需要一個基于云的 Selenium Grid 來執(zhí)行和加速 Selenium 測試用例。下面是 Selenium Grid 的圖示。

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

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

A. ID 定位器:它使用與所有瀏覽器相關(guān)的?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 定位器不應(yīng)該是主要選擇,而應(yīng)該僅在這是剩下的唯一選項時才使用。

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

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

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

下面的快照顯示:

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

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

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

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

結(jié)論

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


0 人點贊