自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

如何加速Selenium測試用例的執(zhí)行

譯文 精選
開發(fā) 測試
本文將主要從速度和性能兩個方面,向您介紹Selenium Web測試各項優(yōu)秀實踐,以便您能夠更好地加快測試并獲取測試結(jié)果。

?Selenium自動化測試的主要目的是為了取代和加快手動測試的進(jìn)程。為了顯著提高測試執(zhí)行的速度,我們可以選擇使用不同類型的等待、Web定位器(Locator)、瀏覽器偏好,來優(yōu)化并提升Selenium測試的基礎(chǔ)設(shè)施。

下面,我們將主要從速度和性能兩個方面,向您介紹Selenium Web測試各項優(yōu)秀實踐,以便您能夠更好地加快測試并獲取測試結(jié)果。

加速Selenium測試的優(yōu)秀實踐

隨著軟件產(chǎn)品的持續(xù)更新,維護(hù)和升級Selenium測試的過程會變得越來越復(fù)雜。不過,無論被測場景如何不同,下面有關(guān)Selenium的基本測試步驟都是相似的:

  1. 使用本地或遠(yuǎn)程的Selenium WebDriver去打開被測的URL。
  2. 使用諸如XPath、CssSelector、以及Linktext等恰當(dāng)?shù)腤ebSelenium定位器,來定位所需的各種WebElement。
  3. 對已定位的WebElement執(zhí)行各項必要的操作,并測試頁面上的斷言。
  4. 釋放WebDriver所使用的資源。

盡管Selenium測試的效率在很大程度上,取決于測試的方法和內(nèi)部結(jié)構(gòu),但是我們可以總結(jié)出如下加快執(zhí)行Selenium測試用例的各種優(yōu)秀實踐:

選擇合適的Web定位器

Selenium中的Web定位器往往被認(rèn)為是任何測試場景的基本構(gòu)建塊。為了自動化與任何Web元素的交互,我們首先應(yīng)該選對可定位WebElement的Web定位器,然后再對相應(yīng)的元素執(zhí)行適當(dāng)?shù)牟僮鳌F渲?,XPath、CSS Selector、Name、LinkText、Partial LinkText、TagName、以及ClassName都是在Selenium中被廣泛使用的Web定位器。我們通??梢詫⑵渑cfind_element或find_elements方法一起使用。

那么,究竟哪一款Web定位器在Selenium中能夠最快地定位到元素呢?其實,ID才是最快的Web定位器,畢竟Selenium WebDriver中的ID定位器,對于頁面上的每個元素來說都是唯一的。ID定位器可以返回與指定值(或字符串)相匹配的WebElement。如果頁面上存在多個具有相同ID的元素,那么document.getElementById()將返回第一個匹配的元素。主流Web瀏覽器都優(yōu)化了document.getElementById()方法,因此我們能夠以更快的速度,從DOM處提供WebElement。

如果WebElement并沒有ID屬性,那么請使用NAME屬性。而如果WebElement既沒有ID、又沒有NAME屬性,那就應(yīng)該使用CSS選擇器(Selector)的Web定位器。CSS引擎在所有主流瀏覽器中都是一致的,并且能夠通過Selenium中的CSS選擇器,來調(diào)優(yōu)它們的性能,以提供更快的元素識別和更少的測試執(zhí)行時間。因此,您在使用此類特定的Web定位器時,也會鮮少遇到瀏覽器的兼容性問題。同時,CSS選擇器也能適應(yīng)IE等老舊的瀏覽器。

此外,與XPath相比,CSS選擇器提供了更好的可讀性。我們甚至可以說,XPath是最慢的Web定位器,當(dāng)您從一個瀏覽器移至另一個瀏覽器時,很可能會遇到XPath的一致性問題。因此,僅當(dāng)您無法在Selenium WebDriver中選用其他可靠的Web定位器時,才建議使用XPath來定位Web元素。

小結(jié)一下,上述Web定位器按照執(zhí)行速度從快到慢依次是:ID、NAME、CSS選擇器、以及XPath。

使用更少的Web定位器

既然您已經(jīng)確定了最適合加速Selenium測試的Web定位器,下一步就應(yīng)該將定位器的數(shù)量保持在最低限度了。

如前所述,我們每次需要使用find_element(By)或find_elements(By)方法,來定位所需的Web元素,以執(zhí)行對DOM樹的訪問。那么對DOM樹的訪問次數(shù)越多,Selenium腳本的執(zhí)行時間就會越長。因此,如果您以Selenium腳本的最佳執(zhí)行速度為目標(biāo)的話,有必要使用更少的Web定位器。這樣,我們不但能夠提高測試腳本的可讀性,還可以最大限度地減少維護(hù)腳本所需的時間。

盡量避免Thread.sleep()

現(xiàn)代網(wǎng)站與Web應(yīng)用往往會?使用AJAX(異步的JavaScript和XML)在網(wǎng)頁上動態(tài)加載內(nèi)容。因此,頁面上的WebElement可能會以不同的時間間隔被加載,這將對尚未處于DOM中的元素造成執(zhí)行上的困難。

在此,我建議您通過監(jiān)控document.readyState的狀態(tài),來檢查DOM狀態(tài)。document.readyState的完成標(biāo)志著頁面上的所有資源都已加載完畢,因此我們可以開始對頁面上存在的WebElement進(jìn)行相關(guān)操作。

由于測試代碼中的幾秒鐘等待,都會增加頁面上資源加載所需的延遲,因此我們需要盡量避免使用Thread.sleep(sleep_in_miliseconds)。Selenium中的Thread.sleep()方法將會讓代碼的執(zhí)行暫停指定的時間間隔。

/* Pauses test execution for specified time in milliseconds */
Thread.sleep(5000);

如上述代碼段所示,我們添加了5秒的等待時間。如果頁面元素在指定的持續(xù)時間之內(nèi)(例如2秒鐘)就已完成了加載,那么剩下3秒的等待就不必要地增加了測試的執(zhí)行時間。由于頁面的加載時間往往取決于諸如:服務(wù)器負(fù)載、頁面設(shè)計、緩存、以及網(wǎng)絡(luò)帶寬等各種外部參數(shù),因此我們無法預(yù)測頁面的加載時間。可見,無論網(wǎng)頁的狀態(tài)如何,Thread.sleep()方法都會執(zhí)行固定時間的休眠,因此為了加速Selenium測試,我們需要避免使用它。

重用現(xiàn)有的瀏覽器實例

目前,能夠與Selenium一起使用的所有自動化測試框架,都可以通過提供注釋,來加快測試的開發(fā)和執(zhí)行。同時,注釋還有助于執(zhí)行具有不同輸入值的測試。當(dāng)然,只有根據(jù)測試的要求,使用正確的注釋集,才能加快Selenium測試。

以下是被各個主流自動化測試框架所廣泛使用的注釋列表:

自動化測試框架

注釋

JUnit [Selenium Java]

@BeforeClass, @Before, @Test, @After, @AfterClass, @Ignore

TestNG [Selenium Java]

@BeforeSuite, @BeforeTest, @BeforeClass, @BeforeMethod, @Test, @AfterMethod, @AfterClass, @AfterTest, etc.

NUnit [Selenium C#]

[SetUp], [TearDown], [Test], [TestCase], [OneTimeSetUp], [OneTimeTearDown], [Ignore], [Category], etc.

XUnit [Selenium C#]

[Theory], [InlineData], [Fact], etc.

有時候,您可能需要在相同的瀏覽器和操作系統(tǒng)類型的組合中,反復(fù)運行某個或某組測試。此時,如果您在每個測試的開始時,都創(chuàng)建一個新的Selenium WebDriver實例,顯然會增加測試執(zhí)行的額外開銷。

Selenium的JUnit

下面是Selenium的JUnit中注解的執(zhí)行順序:

在使用JUnit框架的Selenium自動化測試中,Selenium WebDriver實例是在@Before注釋下實現(xiàn)的SetUp方法中創(chuàng)建的。已創(chuàng)建的實例是在@After注解下實現(xiàn)的TearDown方法中被銷毀的。

Selenium的TestNG

下面是Selenium的TestNG中注解的執(zhí)行順序:

同理,對于Selenium中的TestNG測試,SetUp方法是在@BeforeMethod注解下實現(xiàn)的,而TearDown方法是在@AfterMethod注解下實現(xiàn)的。

在瀏覽器和操作系統(tǒng)的組合上運行一系列測試

下面,我們來討論不同的框架在同一個瀏覽器和操作系統(tǒng)組合上執(zhí)行三個測試的情況:

JUnit 框架

測試 - 1 @Before 注解下的 setUp() -> Test-1 -> @After 注解下的 tearDown()

測試 - 2 @Before 注解下的 setUp() -> Test-2 -> @After 注解下的 tearDown()

測試 - 3 @Before 注解下的 setUp() -> Test-3 -> @After 注解下的 tearDown()

TestNG 框架

測試 - 1 @BeforeMethod 注解下的 setUp() -> Test-1 -> @AfterMethod 注解下的 tearDown()

測試 - 2 @BeforeMethod 注解下的 setUp() -> Test-2 -> @AfterMethod 注解下的 tearDown()

測試 - 3 @BeforeMethod 注解下的 setUp() -> Test-3 -> @AfterMethod 注解下的 tearDown()

如上表所示,在每個測試場景都會在注釋之后創(chuàng)建和銷毀瀏覽器實例。

在JUnit和TestNG框架中重用瀏覽器實例

相反,我們可以使用適當(dāng)?shù)淖⑨屧谀_本之間共享相同的瀏覽器實例:

JUnit 框架

測試 - 1、測試 - 2 和測試 -3 @BeforeClass 注解下的 setUp() -> Test-1、Test-2 和 Test-3 -> @AfterClass 注解下的 tearDown()

TestNG 框架

測試 - 1、測試 - 2 和測試 -3 @BeforeTest(或@BeforeClass)注解下的setUp() -> Test-1、Test-2和Test-3 -> @AfterTest(或@AfterClass)注解下的tearDown()

在這種情況下,所有測試場景都會使用同一個瀏覽器實例,并且一旦所有測試執(zhí)行完成后,該實例就會被銷毀。當(dāng)然,如果測試必須在不同的瀏覽器和操作系統(tǒng)組合上運行時,則不能使用相同的技術(shù),而必須在每個測試場景之后創(chuàng)建和銷毀測試組合。

使用Selenium進(jìn)行自動化測試的顯式等待

Selenium中的隱式等待被應(yīng)用于測試腳本中的所有Web元素。而隱式等待的主要缺點在于您無法在元素可見、可點擊、可選擇等條件下執(zhí)行等待。與此同時,Selenium中的顯式等待則允許您對頁面上存在的WebElement執(zhí)行有條件的等待。例如,如果某個被指定的WebElement在顯式等待所規(guī)定的持續(xù)時間內(nèi)可見,那么就會觸發(fā)ElementNotVisibleException。如果已定位的元素是可點擊的,那么elementToBeClickable方法將返回一個WebElement。

WebDriverWait和ExpectedConditions類的組合可被用于在WebElements上執(zhí)行顯式等待。顯式等待的好處在于它是在代碼層面,而非遠(yuǎn)程Selenium部分上運行的。顯式等待無需等到設(shè)定時間的結(jié)束,而是在滿足指定條件時,便可立即退出等待。如果設(shè)定的條件一旦找到了WebElement,就會將該元素作為結(jié)果予以返回。如果WebElement在DOM中并不存在,即使條件中指定時間已過,它也會觸發(fā)TimeoutException。

在下面的代碼段中,我們對visibilityOfElementLocated條件執(zhí)行了5秒鐘的顯式等待。如果ID = 'element'的WebElement在5秒內(nèi)被找到,那么該顯式等待就會退出,并返回所需的WebElement。

Java
/* Trigger an explicit wait of 5 Seconds */
WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("element"))

由于只要找到元素就可以訪問WebElement,因此實際的等待時間可能會少于設(shè)定的等待時間,那么顯式等待的測試腳本的性能會更好,也會使得Selenium測試運行得更快。

創(chuàng)建原子性和自主式測試腳本

無論測試場景有多么復(fù)雜,我們都需要將復(fù)雜的場景分解成為多個“獨立和原子性”的測試用例。

像TestNG之類的自動化測試框架能夠支持通過諸如dependsOnMethods(用于各種方法)和dependsOnGroups(用于各個組)等注釋,來聲明測試方法之間的顯式依賴關(guān)系。但是,只有當(dāng)您希望在測試方法之間共享數(shù)據(jù)和狀態(tài)時,才應(yīng)該在Selenium測試腳本中使用測試依賴項。

同時,由于原子性測試可被用于故障檢測,因此我們需要通過保持測試的簡短和原子態(tài),來減少維護(hù)測試的工作量。可以說,有了原子性的保證,我們不但可以最大限度地減少測試的依賴性,而且有助于隔離測試中出現(xiàn)的問題,并加快Selenium測試的整體效率。

在Selenium自動化中利用并行測試

Selenium中的并行測試可以讓您在不同的測試環(huán)境中,同時運行相同的測試。如果您計劃使用內(nèi)部Selenium Grid進(jìn)行分布式測試,那么您可以利用Selenium Grid 4所提供的功能,來加速測試場景的執(zhí)行。

根據(jù)所測場景的不同,您可以選擇“類”級別或“方法”級別中的任何一種開展并行化測試。而此類測試主要可以對如下三個方面予以增強:

  • 對測試場景分組
  • 測試場景的參數(shù)化
  • 選擇基于云的Selenium Grid

對測試場景分組

隨著更多的測試文件和測試方法被添加,測試套件的復(fù)雜性會成倍增加。為了最大限度地減少測試套件在實現(xiàn)和維護(hù)上的復(fù)雜性,我們需要根據(jù)被測的功能,對測試進(jìn)行分組。

正如下面對TestNG測試用例進(jìn)行分組所展示那樣,我們創(chuàng)建了兩個測試組(即Search和ToDo),并在“方法”級別并行執(zhí)行。TestNG中的線程計數(shù)屬性允許您通過指定在測試執(zhí)行期間要創(chuàng)建的最大線程數(shù),來并行開展測試。

可見,分組測試場景降低了維護(hù)測試套件的復(fù)雜性,同時也加快了執(zhí)行時間。當(dāng)然,這些都取決于為實現(xiàn)并行化而選擇的方法。

使用Selenium 4(而不是Selenium 3)

Selenium 4是Selenium自動化框架中最受期待的版本之一。目前,Selenium 4的最新版本為??4.0.0-beta-1??。它在如下方面進(jìn)行了顯著的改進(jìn)和增強:

  • 改進(jìn)和優(yōu)化了Selenium Grid
  • 對Selenium WebDriver予以了W3C標(biāo)準(zhǔn)化
  • 增強了Selenium 4的IDE
  • 引入了Chrome DevTools
  • 引入了相對定位器(Relative Locators)

總地說來,Selenium 4中的增強功能可以在加速Selenium測試方面發(fā)揮重要的作用。

過去,Selenium 3使用JSON有線協(xié)議,在Web瀏覽器和測試代碼之間進(jìn)行通信。這會導(dǎo)致使用W3C協(xié)議對API請求進(jìn)行編、解碼而產(chǎn)生額外的開銷。而Selenium 4直接使用WebDriver W3C協(xié)議,從而加快了與Web瀏覽器的通信。這種架構(gòu)更改不但加快了Selenium測試,而且提高了測試的穩(wěn)定性。

下圖展示的是在Selenium 4中新引入的相對定位器。當(dāng)它在訪問臨近的特定WebElement時,非常實用。

與頁面上的每個WebElement使用find_element()和find_elements()方法不同,相對定位器通過與TagName(在Selenium 4的Java中)結(jié)合使用,可以讓您以更快的速度訪問到相對WebElement。因此,在您必須訪問相對于DOM元素的WebElement場景時,相對定位器可以加速Selenium測試。

值得一提的是,從Selenium 3升級到Selenium 4是無縫的,您應(yīng)當(dāng)檢查版本,以確認(rèn)是否真的能夠利用Selenium 4所提供的特性和功能,來加速Selenium測試。

使用基于云的Selenium Grid進(jìn)行自動化測試

當(dāng)涉及到網(wǎng)格的可擴展性和可靠性時,在本地Selenium Grid上并行運行測試,存在著一個嚴(yán)重的缺陷:它并不適用于在大量瀏覽器、操作系統(tǒng)和設(shè)備的組合上,并行地執(zhí)行針對大型Web應(yīng)用的多個測試套件。

所謂云端的Selenium測試,是指在可靠且可擴展的、基于云服務(wù)的Selenium Grid上并行開展測試,因此它有助于加快Selenium測試。由下面顯示的testng.xml文件示例可知,該并行是在“測試”級別上實現(xiàn)的。即:每個<test>標(biāo)記都在單獨的線程中運行。

從下面的執(zhí)行快照中可以看出,這兩個測試都是在基于云端的Selenium Grid上并行運行的。 

使用由基于云端的Selenium Grid所提供的功能,您可以并行運行“N”個測試(此處的“N”取決于您計劃支持的“最大并發(fā)會話數(shù)”),進(jìn)而加快Selenium測試。 

通過禁用網(wǎng)頁上的圖像來實現(xiàn)更快的頁面加載

一旦創(chuàng)建了Selenium WebDriver實例,Selenium中的driver.get()方法將被用于打開被測頁面。網(wǎng)頁的加載速度往往取決于頁面的組成。如果頁面上有大量的圖像的話,那么頁面的加載時間就會增加。

因此,通過使用特定于瀏覽器的設(shè)置,您可以按需禁用在相應(yīng)的Web瀏覽器中加載圖像,以加快網(wǎng)頁的加載速度。

運行Selenium腳本時,禁用Chrome中的圖像加載

如下代碼段展示了如何實現(xiàn)在Chrome中禁用圖像的加載,以加快Selenium測試:

Java
package com.disableimages;

import org.openqa.selenium.*;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.FirefoxOptions;
import org.openqa.selenium.firefox.FirefoxProfile;
import org.testng.annotations.AfterTest;
import org.testng.annotations.Test;
import java.util.HashMap;

public class test_disable_image_demo
{
String test_url = "https://www.amazon.com";
WebDriver driver = null;

@Test(enabled=true, priority = 1)
public void test_disable_images_chrome() throws InterruptedException
{
ChromeOptions options =new ChromeOptions();
HashMap<String, Object> prefs = new HashMap<String, Object>();
prefs.put("profile.managed_default_content_settings.images", 2);

options.setExperimentalOption("prefs", prefs);
driver = new ChromeDriver(options);

driver.get(test_url);
driver.manage().window().maximize();

Thread.sleep(5000);
}

@AfterTest
public void tearDown()
{
if (driver != null)
{
driver.quit();
}
}
}

在上述代碼實現(xiàn)中,我們通過將Firefox的首選項--permissions.default.image設(shè)置為2,以禁用從Amazon處加載圖像。該方法對于需要加載大量圖像的測試頁面的情況,非常有效。

使用數(shù)據(jù)驅(qū)動測試進(jìn)行參數(shù)化

在某些情況下,您需要跨多個瀏覽器和操作系統(tǒng)的組合,或針對不同輸入的組合,運行特定的場景測試。眾所周知,對測試方法中的值進(jìn)行硬編碼,并不是一個好的習(xí)慣。您應(yīng)該使用參數(shù)化,來針對大量的數(shù)據(jù)集運行測試。目前,所有主流的自動化框架,包括:用于Selenium C#的MSTest、NUnit等,用于Selenium Java的JUnit、TestNG等,以及用于Selenium Python的PyTest等,都支持參數(shù)化測試。

針對那些必須在多個測試組合(或測試輸入)中運行相同測試的需求,您可以通過諸如TestNG之類的自動化測試框架,讓testng.xml來傳遞參數(shù),進(jìn)而在“測試”級別實現(xiàn)并行的參數(shù)化測試,以顯著地加快Selenium測試,并提高測試的覆蓋率。

按需使用無頭(Headless)瀏覽器和驅(qū)動程序

運行Selenium自動化測試的一個目的是,檢查并驗證底層UI元素的交互。對此,您需要通過在非無頭(non-headless)模式下調(diào)用瀏覽器驅(qū)動程序,來驗證交互。

同時,無頭瀏覽器允許您在沒有瀏覽器或任何其他GUI下,運行瀏覽器UI測試。目前,Chrome、Firefox等流行的瀏覽器都可以在無頭模式下運行。由于跨瀏覽器測試是在后端運行的,因此無頭測試提高了跨瀏覽器測試的整體性能。請參考如下代碼段: 

Java
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("build", "your build name");
capabilities.setCapability("name", "your test name");
capabilities.setCapability("platform", "Windows 10");
capabilities.setCapability("browserName", "Chrome");
capabilities.setCapability("version","89.0");
capabilities.setCapability("headless",true);

當(dāng)您不打算檢查通過測試腳本、以及相應(yīng)的瀏覽器驅(qū)動程序去實現(xiàn)的UI交互時,就可以使用無頭瀏覽器測試??梢哉f,沒有瀏覽器UI和無頭瀏覽器的各種UI,都可以起到加速Selenium測試的效果。

目前,此類主流無頭瀏覽器(或驅(qū)動程序)包括:HtmlUnit、Splash、PhantomJS、TrifleJS、ZombieJS、以及SimpleBrowser。其中,基于HtmlUnit的HtmlUnitDriver是Selenium WebDriver無頭瀏覽器的輕量級實現(xiàn)。HtmlUnitDriver是與Chrome和Firefox類似的瀏覽器驅(qū)動程序,不過它并不提供GUI。因此,您可以靈活地在主流瀏覽器的無頭版本、以及HtmlUnitDriver上,執(zhí)行跨瀏覽器測試。

用Java編寫的HtmlUnit瀏覽器能夠支持AJAX和JavaScript的處理。同時,它也提供了部分渲染的功能。下面展示的是用于創(chuàng)建HtmlUnitDriver實例,并使用它在Selenium中執(zhí)行瀏覽器測試的代碼片段:

JavaScript
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.htmlunit.HtmlUnitDriver;

/* Create a new instance of the HtmlUnitDriver */
WebDriver driver = new HtmlUnitDriver();

/* Perform necessary actions as per the desired test requirement */
................
................

/* Release the resources held by HtmlUnitDriver */
driver.quit();

而PhantomJS是另一種流行的、基于JavaScript API的無頭瀏覽器選擇項。它使用QtWebKit作為后端,并為流行的Web標(biāo)準(zhǔn)提供了諸如JSON、Canvas、SVG、以及DOM等原生的處理支持。PhantomJS 2.1是其最新的穩(wěn)定版本,其中集成了GhostDriver。不過, PhantomJS項目(https://github.com/ariya/phantomjs)目前處于暫停狀態(tài)。

PhantomJS不但可以被用于Windows、Linux和macOS X等流行平臺,而且能夠被廣泛地用于諸如:無頭Web測試、頁面自動化、屏幕截圖、以及網(wǎng)絡(luò)監(jiān)控等用例中。

下面顯示的是創(chuàng)建PhantomJS驅(qū)動程序?qū)嵗?,并使用它在Selenium中執(zhí)行瀏覽器測試的代碼片段:

JavaScript
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.phantomjs.PhantomJSDriver;

/* Create a new instance of the PhantomJS Driver*/
WebDriver driver = new PhantomJSDriver();
/* Perform necessary actions as per the desired test requirement */
................
................

/* Release the resources held by PhantomJS Driver */
driver.quit();

根據(jù)測試要求,我們在上述代碼中使用了無頭瀏覽器測試,來加速Selenium測試。當(dāng)然,除了HtmlUnitDriver和PhantomJSDriver之外,Chrome和Firefox等無頭版本的瀏覽器,也可被用于在Selenium測試中加速,并獲取更高的準(zhǔn)確性。

小結(jié)

在編寫Selenium測試時,影響性能的主要因素之一便是測試的運行速度。其中,基于云端的Selenium Grid和Selenium并行測試是加速該過程的兩種主要方法。同時,我們也介紹了如何通過采用不同的語言和自動化測試框架,來加速Selenium測試,提高測試性能與覆蓋率、以及交付出更好的產(chǎn)品質(zhì)量。 

譯者介紹

陳峻 (Julian Chen),51CTO社區(qū)編輯,具有十多年的IT項目實施經(jīng)驗,善于對內(nèi)外部資源與風(fēng)險實施管控,專注傳播網(wǎng)絡(luò)與信息安全知識與經(jīng)驗;持續(xù)以博文、專題和譯文等形式,分享前沿技術(shù)與新知;經(jīng)常以線上、線下等方式,開展信息安全類培訓(xùn)與授課。

原文標(biāo)題:??How To Speed Up Selenium Test Cases Execution???,作者:Himanshu Sheth?

責(zé)任編輯:華軒 來源: 51CTO
相關(guān)推薦

2011-10-11 09:56:59

PhoneGapSelenium

2024-09-29 15:26:53

MySQLPython

2021-03-04 15:43:29

前端測試工具開發(fā)

2011-05-16 15:09:20

測試用例

2011-04-18 10:46:39

接口測試

2011-06-08 17:23:12

測試用例

2011-05-16 15:18:18

測試用例

2022-01-19 17:48:57

測試用例開發(fā)

2011-07-04 18:06:52

測試用例

2011-11-02 09:54:37

測試

2022-05-10 14:54:13

驗收標(biāo)準(zhǔn)測試用例

2021-12-22 10:19:47

鴻蒙HarmonyOS應(yīng)用

2022-01-14 11:51:00

測試工具自動化

2011-05-16 14:54:12

測試用例

2020-08-25 08:03:59

測試Sharness結(jié)構(gòu)

2011-12-23 17:03:29

性能測試用例設(shè)計

2023-06-09 15:24:50

UiTest接口鴻蒙

2011-06-03 16:58:03

測試用例

2011-09-01 10:05:24

PhoneGap應(yīng)用程序測試

2021-05-26 08:51:50

漏洞漏洞掃描符號執(zhí)行
點贊
收藏

51CTO技術(shù)棧公眾號