国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Selenium 3和JUnit 5中的顯示等待與隱式等待

這篇具有很好參考價值的文章主要介紹了Selenium 3和JUnit 5中的顯示等待與隱式等待。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

顯示等待(Explicit Wait)

什么是顯示等待?

如何實現(xiàn)顯示等待?

顯示等待條件

隱式等待(Implicit Wait)

什么是隱式等待?

如何實現(xiàn)隱式等待?

顯示等待和隱式等待的區(qū)別

強制等待


在Selenium自動化測試中,等待是一個至關(guān)重要的概念。網(wǎng)頁加載速度、元素的可見性以及元素的可交互性都是測試腳本成功執(zhí)行的關(guān)鍵因素。Selenium提供了兩種主要的等待方式,即"顯示等待"和"隱式等待",用于處理這些情況。本文將深入探討這兩種等待方式的使用場景和實現(xiàn)方式,并結(jié)合Selenium 3和JUnit 5來說明。

顯示等待(Explicit Wait)

什么是顯示等待?

顯示等待是一種在特定條件下等待某個元素出現(xiàn)或某個條件變?yōu)檎娴牡却绞?。這意味著你可以設(shè)置一個等待時間,只有在這個時間內(nèi)特定條件滿足時,測試腳本才會繼續(xù)執(zhí)行。這樣可以確保在元素加載完成或者某個條件成立之后再進行后續(xù)的操作,從而提高測試的穩(wěn)定性和可靠性。

如何實現(xiàn)顯示等待?

在Selenium 3和JUnit 5中,我們可以使用WebDriverWait類來實現(xiàn)顯示等待,如以下示例:

import org.junit.jupiter.api.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;

public class ExplicitWaitExample {

    @Test
    public void explicitWaitExample() {
        System.setProperty("webdriver.chrome.driver", "path/to/chromedriver");
        WebDriver driver = new ChromeDriver();

        // 打開網(wǎng)頁
        driver.get("https://example.com");

        // 創(chuàng)建一個等待對象,設(shè)置等待時間為10秒
        WebDriverWait wait = new WebDriverWait(driver, 10);

        // 等待直到按鈕可點擊
        WebElement button = wait.until(ExpectedConditions.elementToBeClickable(By.xpath("http://button[text()='Click Me']")));

        // 點擊按鈕
        button.click();

        // 關(guān)閉瀏覽器
        driver.quit();
    }
}

上述代碼中,我們首先設(shè)置了Chrome瀏覽器的驅(qū)動路徑,并創(chuàng)建了一個WebDriver實例。然后,我們打開了網(wǎng)頁,并使用WebDriverWait類來創(chuàng)建一個顯示等待對象,并指定了最大等待時間為10秒。接下來,我們使用ExpectedConditions.elementToBeClickable條件來等待按鈕出現(xiàn)并可點擊。一旦按鈕符合條件,就會執(zhí)行后續(xù)的點擊操作。

顯示等待條件

1.?elementToBeClickable 等待元素可點擊,適用于需要點擊某個元素的操作。

WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.id("elementId")));

?2.?visibilityOfElementLocated 等待元素可見,適用于需要驗證元素是否出現(xiàn)在頁面上的操作。

WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("http://div[@class='example']")));

?3.?textToBePresentInElement 等待文本出現(xiàn)在元素中,適用于需要驗證元素是否包含特定文本的操作。

boolean textPresent = wait.until(ExpectedConditions.textToBePresentInElement(By.id("elementId"), "Expected Text"));

?4.?presenceOfElementLocated 等待元素存在,不關(guān)心元素是否可見或可點擊,只要元素在DOM中存在即可。

WebElement element = wait.until(ExpectedConditions.presenceOfElementLocated(By.id("elementId")));

5.?frameToBeAvailableAndSwitchToIt 等待幀可用并切換到它,適用于需要在iframe中執(zhí)行操作的情況。

wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.id("frameId")));

?6.?alertIsPresent 等待警告框出現(xiàn),適用于需要處理JavaScript警告框的情況。

Alert alert = wait.until(ExpectedConditions.alertIsPresent());

這些等待條件使你能夠根據(jù)需要等待元素的各種狀態(tài),以確保你的自動化測試腳本在執(zhí)行操作之前等待正確的條件。根據(jù)具體的測試場景和需求,你可以選擇適當?shù)牡却龡l件來提高測試的穩(wěn)定性和可靠性。

隱式等待(Implicit Wait)

什么是隱式等待?

隱式等待是一種全局性的等待設(shè)置,它會在整個測試腳本的執(zhí)行過程中生效。當你啟用隱式等待后,Selenium會在查找元素時等待一段時間,如果元素在這個時間內(nèi)找到了,就會立即執(zhí)行后續(xù)操作,否則會拋出超時異常。這個等待時間是全局的,適用于所有的元素查找操作。

如何實現(xiàn)隱式等待?

在Selenium 3和JUnit 5中,你可以使用implicitlyWait方法來啟用隱式等待。以下是一個示例:

import org.junit.jupiter.api.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;

public class ImplicitWaitExample {

    @Test
    public void implicitWaitExample() {
        System.setProperty("webdriver.chrome.driver", "path/to/chromedriver");
        WebDriver driver = new ChromeDriver();

        // 設(shè)置全局的隱式等待時間為10秒
        driver.manage().timeouts().implicitlyWait(10, java.util.concurrent.TimeUnit.SECONDS);

        // 打開網(wǎng)頁
        driver.get("https://example.com");

        // 查找元素,如果元素不在頁面上立即找到,最多等待10秒
        WebElement element = driver.findElement(By.xpath("http://input[@name='search']"));

        // 執(zhí)行其他操作
        element.sendKeys("Selenium");

        // 關(guān)閉瀏覽器
        driver.quit();
    }
}

在上述代碼中,我們首先設(shè)置了Chrome瀏覽器的驅(qū)動路徑,并創(chuàng)建了一個WebDriver實例。然后,我們使用driver.manage().timeouts().implicitlyWait方法來設(shè)置全局的隱式等待時間為10秒。這意味著每次查找元素時,Selenium會等待最多10秒,如果元素在這個時間內(nèi)找到了,就會繼續(xù)
執(zhí)行后續(xù)操作。


顯示等待和隱式等待的區(qū)別

1. 用法和范圍:

  • 隱式等待: 隱式等待是一種全局性的等待設(shè)置,適用于整個WebDriver實例的生命周期。一旦設(shè)置了隱式等待,它將在所有的元素查找操作上生效,除非被顯式地覆蓋或禁用。它不依賴于特定條件或元素,而只是設(shè)置了一個全局的最大等待時間,當查找元素時,如果元素沒有立即找到,WebDriver會等待指定的時間。

  • 顯示等待: 顯示等待是一種更靈活的等待機制,它允許你根據(jù)特定的條件等待元素或條件滿足后再執(zhí)行后續(xù)操作。顯示等待需要明確地定義等待條件和等待時間,并且僅在等待條件滿足或超時后才繼續(xù)執(zhí)行操作。顯示等待是針對特定的元素或條件,可以根據(jù)需要在不同的地方使用不同的等待條件和時間。

2. 超時處理:

  • 隱式等待: 隱式等待設(shè)置一個全局的超時時間,如果在該時間內(nèi)找到了元素,就會立即執(zhí)行后續(xù)操作。如果超過了超時時間而元素還未找到,WebDriver會拋出NoSuchElementException異常。

  • 顯示等待: 顯示等待允許你為每個等待條件設(shè)置不同的超時時間。這意味著你可以根據(jù)不同的情況和需求設(shè)置不同的等待時間,以確保測試腳本在特定條件滿足后繼續(xù)執(zhí)行。

3. 等待條件:

  • 隱式等待: 隱式等待不依賴于特定的等待條件,它只是等待一段時間,無論元素是否可見、可交互或其他條件。

  • 顯示等待: 顯示等待允許你使用預(yù)定義的等待條件(例如visibilityOfElementLocated、elementToBeClickabletextToBePresentInElement等)或自定義的等待條件,以滿足特定的測試需求。你可以根據(jù)需要選擇適當?shù)臈l件。

綜上所述,顯示等待提供了更大的靈活性和控制,因為它允許你為不同的元素或情況設(shè)置不同的等待條件和超時時間。隱式等待則是一種全局設(shè)置,適用于整個WebDriver實例,對于整體性能有較好的控制,但缺乏靈活性,可能會導(dǎo)致不必要的等待時間或等待時間過短。在實際測試中,通常建議優(yōu)先使用顯示等待,根據(jù)需要進行精確的等待條件配置,以提高測試的穩(wěn)定性和可維護性~~??

強制等待

強制等待是一種等待方式,它不依賴于特定條件或元素的可見性或可點擊性。相反,它是在測試腳本中添加一個明確的等待時間,無論條件是否滿足,都會等待指定的時間。雖然強制等待不是推薦的等待策略,因為它不夠靈活,但在某些情況下仍然有用,例如等待網(wǎng)頁加載或執(zhí)行復(fù)雜的JavaScript操作后。

在Selenium中,我們可以使用Thread.sleep方法來實現(xiàn)強制等待。這個方法會導(dǎo)致當前線程暫停執(zhí)行指定的時間,單位是毫秒。

import org.junit.jupiter.api.Test;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

public class ExplicitWaitExample {

    @Test
    public void forceWaitExample() throws InterruptedException {
        System.setProperty("webdriver.chrome.driver", "path/to/chromedriver");
        WebDriver driver = new ChromeDriver();

        // 打開網(wǎng)頁
        driver.get("https://example.com");

        // 執(zhí)行一些操作...

        // 強制等待5秒鐘
        Thread.sleep(5000);

        // 執(zhí)行其他操作...

        // 關(guān)閉瀏覽器
        driver.quit();
    }
}

在上述代碼中,我們使用Thread.sleep方法來強制等待5秒鐘。請注意,這會導(dǎo)致測試腳本暫停執(zhí)行,無論頁面是否已經(jīng)加載完畢或其他條件是否滿足。因此,強制等待可能會導(dǎo)致測試腳本變得不穩(wěn)定,因為它不會等待元素的可見性或可交互性。

總結(jié):

在Selenium自動化測試中,等待是一個至關(guān)重要的概念,用于處理頁面加載、元素可見性和可交互性等情況。兩種主要的等待方式是隱式等待(Implicit Wait)和顯示等待(Explicit Wait),它們在用法和行為上有一些關(guān)鍵區(qū)別。

隱式等待 是一種全局性的等待設(shè)置,它適用于整個WebDriver實例的生命周期。它會設(shè)置一個全局的最大等待時間,當查找元素時,如果元素沒有立即找到,WebDriver會等待指定的時間,然后繼續(xù)執(zhí)行后續(xù)操作。隱式等待不依賴于特定條件或元素,而只是在元素查找時等待一段時間。

顯示等待 是一種更靈活的等待機制,它允許你根據(jù)特定的條件等待元素或條件滿足后再執(zhí)行后續(xù)操作。顯示等待需要明確地定義等待條件和等待時間,并且僅在等待條件滿足或超時后才繼續(xù)執(zhí)行操作。顯示等待是針對特定的元素或條件,可以根據(jù)需要在不同的地方使用不同的等待條件和時間。文章來源地址http://www.zghlxwxcb.cn/news/detail-696933.html

到了這里,關(guān)于Selenium 3和JUnit 5中的顯示等待與隱式等待的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Selenium中的隱式等待和顯式等待

    Selenium中的隱式等待和顯式等待

    在Selenium中,“等待”在執(zhí)行測試中起著重要作用。在本文中,您將學(xué)習Selenium中“隱式”和“顯式”等待的各個方面。 在本文中,您將學(xué)習到 1.?為什么我們需要在selenium中等待? 2.?隱瞞等待 3.?明確等待 4.?流利的等待 為什么我們需要在Selenium中等待? 大多數(shù)Web應(yīng)用程序都

    2024年02月07日
    瀏覽(21)
  • web自動化之基礎(chǔ)內(nèi)容二(全網(wǎng)最詳細,selenium獲取斷言信息,顯示等待和隱式等待,xpath高級語法)-第二天

    web自動化之基礎(chǔ)內(nèi)容二(全網(wǎng)最詳細,selenium獲取斷言信息,顯示等待和隱式等待,xpath高級語法)-第二天

    獲取到的斷言信息就是實際結(jié)果 預(yù)期結(jié)果使我們確定的,直接寫在代碼中的 而實際結(jié)果是無法確定的,所以需要用一些方法去獲取 代碼示例 場景:當我們加載頁面的時候,一些元素是需要時間的 就有可能發(fā)生,代碼執(zhí)行到了,而元素沒有被加載出來 此時就會出現(xiàn)找不到元

    2024年01月17日
    瀏覽(21)
  • Selenium自動化測試:詳解顯示等待和條件類

    Selenium自動化測試:詳解顯示等待和條件類

    了解Selenium中的顯示等待和條件類,以確保UI自動化測試用例的穩(wěn)定性。掌握各種等待條件,如元素出現(xiàn)、可見、可點擊等,以及實現(xiàn)原理。

    2024年02月03日
    瀏覽(17)
  • Selenium常用操作之單選復(fù)選框、下拉列表、鍵盤、截屏、斷言、(顯式隱式)等待

    Selenium常用操作之單選復(fù)選框、下拉列表、鍵盤、截屏、斷言、(顯式隱式)等待

    目錄 1. 窗口最大化 2.單選框操作 3. 復(fù)選框操作 4. 下拉列表 5. selenium 三種等待 6. 鍵盤操作 7.截屏 8.斷言 9. Selenium操作JS彈窗控件 10.鼠標懸停與釋放 (1) 強制等待 ?? 常用于調(diào)試 (2) 隱式等待 ??簡介:?? ?? a 、 driver.implicitly_wait(10),隱式等待設(shè)置了一個時間,在一段時

    2024年02月03日
    瀏覽(23)
  • 學(xué)習selenium+python使用 XPath 表達式來實現(xiàn)找到目標元素時智能封裝等待,執(zhí)行測試代碼啟動Chrome瀏覽器后,地址欄只顯示data;

    學(xué)習selenium+python使用 XPath 表達式來實現(xiàn)找到目標元素時智能封裝等待,執(zhí)行測試代碼啟動Chrome瀏覽器后,地址欄只顯示data;

    學(xué)習使用 XPath 表達式來實現(xiàn)找到目標元素時智能封裝等待 執(zhí)行測試代碼啟動Chrome瀏覽器后,地址欄只顯示 data; 看了好久找到了替代啟動瀏覽器的方法:換成 self.driver.get(\\\'http://localhost:8080\\\') 就好了 然后開始琢磨兩者的區(qū)別: 使用 self.driver.get(\\\'http://localhost:8080\\\') 時,driver 是

    2024年01月17日
    瀏覽(304)
  • selenium之顯示等待(等到某個元素出現(xiàn)后再繼續(xù)執(zhí)行)

    本文章還請認真仔細閱讀,非常簡單,閱讀前,你可能已經(jīng)掌握,xpath 我們在爬蟲的時候,總會利用time.sleep(),去等待元素的出現(xiàn),但是這很容易出錯,因為你不知道你的網(wǎng)速有多卡??,從而導(dǎo)致頻繁報錯 我相信我的注釋已經(jīng)很 【言簡意賅】了,你一定可以看得懂 我用了一

    2024年02月12日
    瀏覽(20)
  • Java Selenium中的等待和超時

    在執(zhí)行 selenium 自動化測試時,我們使用等待來使我們的測試可靠且健壯。最常見的是,在運行自動化測試時,如果在加載 Webdriver 想要交互的特定元素時出現(xiàn)延遲,我們會看到“ElementNotVisibleException”。 等待和超時可幫助用戶在執(zhí)行某些操作或在應(yīng)用程序中的不同頁面之間導(dǎo)

    2024年02月03日
    瀏覽(35)
  • webdriver 的三種等待方式(強制等待、隱式等待、顯示等待)

    在自動化測試腳本的運行過程中,webdriver操作瀏覽器的時候,對于元素的定位是有一定的超時時間,大致應(yīng)該在1-3秒的樣子,如果這個時間內(nèi)仍然定位不到元素,就會拋出異常,中止腳本執(zhí)行。我們可以通過在腳本中設(shè)置等待的方式來避免由于網(wǎng)絡(luò)延遲或瀏覽器卡頓導(dǎo)致的偶

    2024年02月13日
    瀏覽(15)
  • 自動化測試系列-Selenium三種等待詳解

    自動化測試系列-Selenium三種等待詳解

    第一種也是最簡單粗暴的一種辦法就是強制等待sleep(time),強制讓程序等time秒時間,不管程序能不能跟上速度,還是已經(jīng)提前到了,都必須等time時長。 如下代碼案例所示: 這種叫強制等待,不管你瀏覽器是否加載完了,程序都得等待5秒,5秒一到,繼續(xù)執(zhí)行下面的代碼,作為

    2024年04月10日
    瀏覽(25)
  • Selenium+JUnit的自動化測試報告

    Selenium+JUnit的自動化測試報告

    文章摘要: ? ? ? ? 本文記錄了作者本人的交流論壇項目的自動化測試報告具體內(nèi)容。其中其中包括了對項目測試用例的設(shè)計、測試工具的選擇、測試環(huán)境的準備部署和項目測試的代碼設(shè)計。較為完整的展現(xiàn)了自動化測試的全過程。 ? ? ? ? ? 在測試之前,首先要做的工作

    2024年02月04日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包