溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

怎么加速Selenium

發(fā)布時(shí)間:2022-03-01 11:04:22 來(lái)源:億速云 閱讀:184 作者:iii 欄目:開發(fā)技術(shù)

本篇內(nèi)容主要講解“怎么加速Selenium”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“怎么加速Selenium”吧!

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

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

  • 使用 Selenium Webdriver(本地/遠(yuǎn)程)打開測(cè)試中的 URL

  • 利用相關(guān)的網(wǎng)頁(yè)定位器,定位網(wǎng)頁(yè)元素

  • 對(duì)被測(cè)頁(yè)面上的定位 Web 元素執(zhí)行斷言

  • 釋放 WebDriver 使用的資源

讓我們重點(diǎn)介紹一些方法來(lái)了解如何加速 selenium 測(cè)試。

Selenium 自動(dòng)化中的并行測(cè)試

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

A. 分組測(cè)試:

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

B. 用 Selenium 4 替換 Selenium 3:

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

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

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

怎么加速Selenium

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

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

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

B. 名稱選擇器:當(dāng) WebElement 中沒有 ID 時(shí),使用名稱選擇器 Web 定位器。

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

D. XPath: XPath Selector 是最靈活的 Web 定位器,但它是最快的四個(gè)定位器中最慢的,因?yàn)楸仨毧缭铰窂降拿恳粚硬拍苓x擇特定的 Web 元素并從一個(gè)瀏覽器移動(dòng)到另一個(gè)瀏覽器。使用 XPath 定位器不應(yīng)該是主要選擇,而應(yīng)該僅在這是剩下的唯一選項(xiàng)時(shí)才使用。

  • 使用少量 Web 定位器:將Web 定位器的數(shù)量保持在最低限度,可以提高測(cè)試腳本的可讀性,從而減少 Selenium 腳本的執(zhí)行時(shí)間。

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

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

  • 創(chuàng)建原子腳本:通過(guò)簡(jiǎn)化復(fù)雜場(chǎng)景來(lái)創(chuàng)建獨(dú)立的測(cè)試用例使 Selenium 測(cè)試高效。像 TestNG 這樣的框架支持測(cè)試方法之間的顯式測(cè)試依賴關(guān)系,而原子測(cè)試可以輕松檢測(cè)到故障,這減少了測(cè)試時(shí)間和維護(hù)工作,最大限度地減少了測(cè)試依賴關(guān)系,并加速了 Selenium 測(cè)試。

  • 禁用網(wǎng)頁(yè)上的圖像以加快頁(yè)面加載速度:創(chuàng)建 Selenium 實(shí)例后,您可以使用 driver.get() 方法打開被測(cè)頁(yè)面。許多網(wǎng)頁(yè)內(nèi)容豐富,由許多圖像組成,導(dǎo)致頁(yè)面加載速度變慢。但是可以通過(guò)使用瀏覽器相關(guān)設(shè)置禁用圖像加載來(lái)加快頁(yè)面加載速度。

下面的快照顯示:

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

怎么加速Selenium

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

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

  • 參數(shù)化的數(shù)據(jù)驅(qū)動(dòng)測(cè)試:讓我們來(lái)看看如何使用Parameterization加速 selenium 測(cè)試。當(dāng)涉及針對(duì)大量數(shù)據(jù)集進(jìn)行測(cè)試,并在不同的測(cè)試輸入上運(yùn)行相同的測(cè)試時(shí)。參數(shù)化被證明是一個(gè)很好的選擇。大多數(shù)自動(dòng)化框架都很好地支持參數(shù)化,例如 TestNG(Selenium Java)、JUnitNUnit(C#)、PyTest( Selenium Python ) 等。

  • 使用無(wú)頭瀏覽器/驅(qū)動(dòng)程序:無(wú)頭瀏覽器允許我們?cè)跊]有瀏覽器圖形用戶界面 (GUI) 的情況下執(zhí)行瀏覽器用戶界面 (UI) 測(cè)試。它還有助于提高在后臺(tái)運(yùn)行的跨瀏覽器測(cè)試的效率。如果怒不想了解通過(guò)測(cè)試腳本收到的 UI 交互,則不需要此最佳實(shí)踐。一些常見的無(wú)頭瀏覽器是 HtmlUnit、Splash、PhantomJS 等。在 PhantomJS 驅(qū)動(dòng)程序的上下文中查看 Selenium 瀏覽器測(cè)試的性能。

到此,相信大家對(duì)“怎么加速Selenium”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問一下細(xì)節(jié)
推薦閱讀:
  1. selenium部署
  2. php加速

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI