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

五、Selenium 三種等待方式:強(qiáng)制等待、隱式等待、顯示等待

這篇具有很好參考價(jià)值的文章主要介紹了五、Selenium 三種等待方式:強(qiáng)制等待、隱式等待、顯示等待。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。


一、強(qiáng)制等待

名詞解釋:強(qiáng)制線程休眠一定時(shí)間,適合腳本調(diào)試時(shí)使用。

常用方法:Thread.sleep(long millis);

  • 優(yōu)點(diǎn):適合腳本調(diào)試時(shí)使用;
  • 缺點(diǎn):不能準(zhǔn)確把握需要等待的時(shí)間,如果用例中大量使用,會浪費(fèi)不必要的等待時(shí)間,影響用例的執(zhí)行效率;
    • 操作未完成,等待結(jié)束,導(dǎo)致系統(tǒng)報(bào)錯(cuò);
    • 操作完成,時(shí)間未到,導(dǎo)致浪費(fèi)時(shí)間;

二、隱式等待

名詞解釋:設(shè)置一個(gè)最長等待時(shí)間,輪詢查看頁面是否加載完成(默認(rèn) 0.5 秒),如果超過最長等待時(shí)間頁面未加載完成則拋出異常。

常用方法:driver.manage().timeouts().implicitlyWait(Duration duration);

  • 優(yōu)點(diǎn):隱式等待對整個(gè) WebDriver 生命周期都起作用,在開始時(shí)設(shè)置一次即可。
  • 缺點(diǎn):使用隱式等待,程序會一直等待頁面加載完成,才會執(zhí)行下一步操作(有時(shí)候頁面想要的元素早已加載完成了,但是頁面上個(gè)別元素還沒有加載完成,仍要等待頁面全部加載完成才能執(zhí)行下一步,使用也不是很靈活)

三、顯示等待

名詞解釋:定義等待條件,當(dāng)條件發(fā)生時(shí)才執(zhí)行后續(xù)代碼。程序會輪詢查看條件是否發(fā)生(默認(rèn) 0.5 秒),如果條件成立則執(zhí)行下一步,否則繼續(xù)等待,直到超過設(shè)置的最長時(shí)間,程序拋出異常。
五、Selenium 三種等待方式:強(qiáng)制等待、隱式等待、顯示等待
Wait 接口有兩個(gè)實(shí)現(xiàn)類:WebDriverWait 和 FluentWait

常用方法1:FluentWait 流暢等待

源碼解釋:

  • Wait 接口的一個(gè)實(shí)現(xiàn),可以動(dòng)態(tài)配置它的超時(shí)和輪詢間隔。
  • 每個(gè) FluentWait 實(shí)例定義等待條件的最長時(shí)間,以及檢查條件的頻率。
  • 可配置等待時(shí)忽略特定類型的異常,例如在頁面上搜索元素時(shí)的NoSuchElementExceptions。
  • 線程不安全

示例用法:等待一個(gè)元素出現(xiàn)在頁面上 30 秒,每 5 秒檢查一次它的存在。

	Wait<WebDriver> wait = new FluentWait<WebDriver>(driver)
         .withTimeout(Duration.ofSeconds(30L))
         .pollingEvery(Duration.ofSeconds(5L))
         .ignoring(NoSuchElementException.class);
  
     WebElement foo = wait.until(new Function<WebDriver, WebElement>() {
       public WebElement apply(WebDriver driver) {
         return driver.findElement(By.id("foo"));
       }
     });

示例用法:登錄測試人網(wǎng)站

package com.sunskblue.selenium.waitTest;

import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.NoSuchElementException;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.*;

import java.time.Duration;
import java.util.function.Function;

public class LoginTest {

    public static WebDriver driver;

    @BeforeAll
    public static void SetUp() {
        driver = new ChromeDriver();
    }

    @Test
    public void LoginTest() throws InterruptedException {
        driver.get("https://ceshiren.com/");
		// 顯示等待核心邏輯
        FluentWait<WebDriver> wait = new FluentWait<WebDriver>(driver)
                .withTimeout(Duration.ofSeconds(30))
                .pollingEvery(Duration.ofSeconds(5))
                .ignoring(NoSuchElementException.class);
		// 顯示等待核心邏輯
        WebElement loginElement = wait.until(new ExpectedCondition<WebElement>() {
            @Override
            public WebElement apply(WebDriver webDriver) {
                return driver.findElement(By.xpath("http://span[contains(text(),'登錄')]"));
            }
        });
        
        loginElement.click();
        driver.findElement(By.id("login-account-name")).clear();
        driver.findElement(By.id("login-account-name")).sendKeys("961370624@qq.com");
        driver.findElement(By.id("login-account-password")).clear();
        driver.findElement(By.id("login-account-password")).sendKeys("*******");
        driver.findElement(By.id("login-button")).click();
    }

    @AfterAll
    public static void TearDown() {
        driver.quit();
    }
}

常用方法2:WebDriverwait

  • WebDriverWait 繼承了 FluentWait,可以使用 FluentWait 中的特性;
  • WebDriverWait 中有兩個(gè)有參構(gòu)造器,都調(diào)用了本類中的一個(gè)全參構(gòu)造器
  • 全參構(gòu)造器中使用了 ignoring(NotFountException.class) 方法,使得 WebDriverWait 等待時(shí)自動(dòng)忽略NotFountException;
    五、Selenium 三種等待方式:強(qiáng)制等待、隱式等待、顯示等待

第一個(gè)參數(shù): WebDriver 對象
第二個(gè)參數(shù):最長等待時(shí)間
第三個(gè)參數(shù):輪詢時(shí)間

優(yōu)點(diǎn):等待判斷準(zhǔn)確,不會浪費(fèi)多余的等待時(shí)間,在用例中使用,可以提高執(zhí)行效率。
缺點(diǎn):
1、使用相對比較復(fù)雜;
2、和強(qiáng)制等待類似,每一行等待只執(zhí)行一次,如果要進(jìn)行多個(gè)元素的等待,則需要多次寫入。

示例用法:等待一個(gè)元素出現(xiàn)在頁面上 30 秒

package com.sunskblue.selenium.waitTest;

import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.NoSuchElementException;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.ExpectedCondition;
import org.openqa.selenium.support.ui.FluentWait;
import org.openqa.selenium.support.ui.WebDriverWait;

import java.time.Duration;

/**
 * 顯示等待
 */
public class DisplayWaitTest {
    public static WebDriver driver;

    @BeforeAll
    public static void SetUp() {
        driver = new ChromeDriver();
    }

    @Test
    public void LoginTest() throws InterruptedException {

        driver.get("https://ceshiren.com/");
		// 核心邏輯
        WebElement loginElement = new WebDriverWait(driver, Duration.ofSeconds(30)).until(
                new ExpectedCondition<WebElement>() {
                    @Override
                    public WebElement apply(WebDriver webDriver) {
                        return webDriver.findElement(By.xpath("http://span[contains(text(),'登錄')]"));
                    }
                });
        loginElement.click();

        driver.findElement(By.id("login-account-name")).clear();
        driver.findElement(By.id("login-account-name")).sendKeys("961370624@qq.com");
        driver.findElement(By.id("login-account-password")).clear();
        driver.findElement(By.id("login-account-password")).sendKeys("********");
        driver.findElement(By.id("login-button")).click();
    }

    @AfterAll
    public static void TearDown() {
        driver.quit();
    }
}

四、ExpectedCondition 模塊常用方法

https://blog.csdn.net/zyooooxie/article/details/84561783

五、隱式等待和顯示等待公用優(yōu)先級

Selenium官網(wǎng)明確說明說兩者不建議一同使用;
共用時(shí),兩種等待取決于誰的時(shí)間更長;文章來源地址http://www.zghlxwxcb.cn/news/detail-401822.html

到了這里,關(guān)于五、Selenium 三種等待方式:強(qiáng)制等待、隱式等待、顯示等待的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

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

    目錄 顯示等待(Explicit Wait) 什么是顯示等待? 如何實(shí)現(xiàn)顯示等待? 顯示等待條件 隱式等待(Implicit Wait) 什么是隱式等待? 如何實(shí)現(xiàn)隱式等待? 顯示等待和隱式等待的區(qū)別 強(qiáng)制等待 在Selenium自動(dòng)化測試中,等待是一個(gè)至關(guān)重要的概念。網(wǎng)頁加載速度、元素的可見性以及

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

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

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

    2024年01月17日
    瀏覽(22)
  • Web自動(dòng)化測試進(jìn)階:網(wǎng)頁中難點(diǎn)之等待機(jī)制 —— 強(qiáng)制等待,隱式等待

    為什么要添加等待 避免頁面未渲染完成后操作,導(dǎo)致的報(bào)錯(cuò) 經(jīng)常會遇到報(bào)錯(cuò):selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {\\\"method\\\":\\\"xpath\\\",\\\"selector\\\":\\\"http://*[text()=\\\'個(gè)人中心\\\']\\\"} 頁面還在加載時(shí),就在進(jìn)行查收元素,此時(shí)元素還沒顯示加載出來,而報(bào)

    2024年02月05日
    瀏覽(76)
  • Selenium:三種等待方式

    Selenium:三種等待方式

    目錄 一、顯示等待 二、隱式等待 三、強(qiáng)制等待 UI自動(dòng)化測試,大多都是通過定位頁面元素來模擬實(shí)際的生產(chǎn)場景操作。但在編寫自動(dòng)化測試腳本中,經(jīng)常出現(xiàn)元素定位不到的情況,究其原因,無非兩種情況:1、有frame;2、沒有設(shè)置等待。 因?yàn)榇a運(yùn)行速度和瀏覽器加載渲

    2024年02月03日
    瀏覽(24)
  • 【selenium】三種等待方式

    time模塊中的sleep()方法,程序執(zhí)行到此代碼時(shí)強(qiáng)制等待一段時(shí)間。 time.sleep(time),傳入具體的等待時(shí)間time 可以控制等待的具體時(shí)間,一般在調(diào)試代碼時(shí)使用 無法準(zhǔn)確把握需要等待的時(shí)間 如果設(shè)置時(shí)間過短,操作還未完成,等待時(shí)間已到,會導(dǎo)致測試用例執(zhí)行報(bào)錯(cuò),影響測試

    2024年02月03日
    瀏覽(23)
  • selenium之三種等待方式

    1:強(qiáng)制等待 無條件等待,必須等待設(shè)置的時(shí)間后,再執(zhí)行 使用方法:導(dǎo)入time庫,time.sleep(sec)? ? ? sec表示多少秒,sec設(shè)置多少秒頁面就會等待多少秒(死等),時(shí)間一到,繼續(xù)執(zhí)行下面的代碼。在調(diào)試的時(shí)候很有用,但這個(gè)方法很容易讓線程掛掉,使程序拋異常。 例:使

    2024年02月08日
    瀏覽(20)
  • selenium的三種等待方式

    設(shè)置固定休眠時(shí)間,單位為秒。 由python的time包提供, 導(dǎo)入 time 包后就可以使用。 缺點(diǎn):不智能,使用太多的sleep會影響腳本運(yùn)行速度。 使用方法:time.sleep(delay) 使用舉例:打開百度,強(qiáng)制等待5秒 (無條件等待,在一個(gè)時(shí)間段內(nèi)等待) 一次設(shè)置,全局生效。 不要當(dāng)作固定等待

    2023年04月13日
    瀏覽(14)
  • Appium/Selenium+Java的三種等待方式

    參考: java-selenium三種等待方式 Selenium+Java(六)Selenium 強(qiáng)制等待、顯式等待、隱實(shí)等待 強(qiáng)制等待是利用time模塊的sleep方法來實(shí)現(xiàn),最簡單粗暴的等待方法。 缺點(diǎn):不能準(zhǔn)確把握需要等待的時(shí)間(有時(shí)候操作未完成,等待就結(jié)束了,導(dǎo)致報(bào)錯(cuò);有時(shí)候操作已經(jīng)完成了,但時(shí)間

    2024年02月05日
    瀏覽(21)
  • python自動(dòng)化測試selenium核心技術(shù)三種等待方式

    python自動(dòng)化測試selenium核心技術(shù)三種等待方式

    UI自動(dòng)化測試過程中,可能會出現(xiàn)因測試環(huán)境不穩(wěn)定、網(wǎng)絡(luò)慢等情況,如果不做任何處理的話,會出現(xiàn)無法定位到特定元素而報(bào)錯(cuò),導(dǎo)致自動(dòng)化測試無法順利執(zhí)行。 selenium官網(wǎng)手冊:Waits | Selenium slenium自動(dòng)化測試中,主要涉及三種等待方式:???? 缺點(diǎn):即使網(wǎng)絡(luò)條件較好時(shí)

    2024年04月11日
    瀏覽(28)
  • selenium中三種等待方式:sleep,implicitly_wait,WebDriverWait

    selenium中三種等待方式:sleep,implicitly_wait,WebDriverWait

    強(qiáng)制等待, sleep,設(shè)置等待多長時(shí)間,就要等待多長時(shí)間。等待完成后,才會繼續(xù)下一步: 相比較于sleep的強(qiáng)制等待,selenium中還有種等待,可以稱之為智能等待:implicitly_wait。所謂智能等待,就是在我設(shè)置的等待時(shí)間范圍內(nèi),只要滿足了我的條件,就會立即結(jié)束等待,繼續(xù)

    2024年02月16日
    瀏覽(20)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包