欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

【slenium專題】Webdriver同步設(shè)置

系統(tǒng) 1736 0

Webdriver同步設(shè)置常用等待類主要如下圖所示

【slenium專題】Webdriver同步設(shè)置

?

注:support.ui包內(nèi)類主要實(shí)現(xiàn)顯性等待功能,timeouts()內(nèi)方法主要實(shí)現(xiàn)隱性等待功能

一.線程休眠?

      Thread.sleep(
      
        long
      
       millis)
    

?

二.隱形等待

? 隱性等待:設(shè)置一次,driver整個生命周期中都在使用,不需要針對元素明確設(shè)置

      driver.manage().timeouts().implicitlyWait(
      
        long
      
       outTime, TimeUnit unit);
    

全局設(shè)置,設(shè)置driver執(zhí)行所有定位元素操作的超時時間

Parameters: outTime – 超時等待時間; unit – 時間單位.

Ex.?

      driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
      
        //
      
      
        超時等待時間為10S
      
    

?

?

?

三.顯性等待

?

????顯性等待:需要等待的元素定位時需要逐一明確調(diào)用該等待方法

【slenium專題】Webdriver同步設(shè)置

Figure 1 Support.ui包常用類UML

?

[ 常用等待模板 ]

  1. 等待元素加載

    1)WebDriverWait

      
        new
      
       WebDriverWait(WebDriver driver, 
      
        long
      
      
         timeOutInSeconds).until(ExpectedConditions.presenceOfElementLocated(By by))
      
    

注解

  • Parameters driver-webdriver; timeOutInSeconds- 超時 等待時間( s ; by- 元素 locator
  • timeOutInSeconds 范圍內(nèi),等待滿足 until() 方法中的條件 ,即刻跳出等待。
  • 超出 timeOutInSeconds 拋出異常.

? 2)FluentWait ?

      Wait<WebDriver> wait = 
      
        new
      
       FluentWait<WebDriver>
      
        (driver)



             .withTimeout(
      
      
        long
      
      
         timeOut, TimeUnit unit)



             .pollingEvery(
      
      
        long
      
      
         duration, TimeUnit unit)



             .ignoring(exceptionType);



wait.until(ExpectedConditions.presenceOfElementLocated(By.by));
      
    

注解

  • Parameters driver-webdriver; timeOut - 超時等待時間( s ; unit-時間單位; by- 元素 locator;

    duration-查找元素時間間隔 ; exceptionType-忽略異常類型,例如 默認(rèn)NoSuchElementException.class

  • timeOut 范圍內(nèi), driver 每隔 dration 定位一次元素,若遇到 exceptionType 則繼續(xù)等待,直到滿足 until() 方法中的條件 ,即刻跳出等待。
  • 超出 timeOutInSeconds 未滿足until條件 拋出異常.

? 2.等待并獲取元素—僅需要修改 until 方法體

?

      WebElement element =
      
         wait.until(

  
      
      
        new
      
       ExpectedCondition<WebElement>
      
        (){

    @Override

    
      
      
        public
      
      
         WebElement apply( WebDriver driver) {

        
      
      
        return
      
      
         driver.findElement( By by);

    }

  }

);
      
    

注解

  • Parameters driver-webdriver W ebDriverWait|FluentWait 實(shí)例 化方法中獲取 ; by- 元素 locator
  • Return: 若定位到元素,返回webelement;否則報異常

[ 案例 ]

  1. 等待頁面元素加載
    • WebDriverWait
      Wait<WebDriver> wait = 
      
        new
      
       WebDriverWait(driver,10
      
        );



wait.until(

    ExpectedConditions. presenceOfElementLocated(By.id(
      
      "myDynamicElement"
      
        ))

);
      
    

方法功能:定位 id=' myDynamicElement' 的元素,超時等待時間為 10S

    • FluentWait
      Wait<WebDriver> wait = 
      
        new
      
       FluentWait<WebDriver>
      
        (driver)



             .withTimeout(
      
      60
      
        , TimeUnit.SECONDS)



             .pollingEvery(
      
      10
      
        , TimeUnit.SECONDS)



             .ignoring(NoSuchElementException.
      
      
        class
      
      
        );



wait.until(ExpectedConditions.presenceOfElementLocated(By.id(
      
      "myDynamicElement")));
    

方法功能:定位 id=' myDynamicElement' 的元素,超時等待時間為 60S ,每隔 10S 定位一次,遇到 NoSuchElementException 報錯忽略,繼續(xù)等待直到超過 60s

  1. 等待并獲取頁面元素
    • WebDriverWait
      Wait<WebDriver> wait = 
      
        new
      
       WebDriverWait(driver, 10
      
        );



WebElement e 
      
      =
      
         wait.until(

    
      
      
        new
      
       ExpectedCondition< WebElement>
      
        (){



        @Override

        
      
      
        public
      
      
         WebElement apply( WebDriver d) {

            
      
      
        return
      
       d.findElement( By.id( " myDynamicElement "
      
         ));

        }

    }

);    
      
    

方法功能:定位 id=' myDynamicElement' 的元素,超時等待時間為 10S ,若定位到元素,直接返回元素

    • ? FluentWait
      Wait<WebDriver> wait = 
      
        new
      
       FluentWait<WebDriver>
      
        (driver)

             .withTimeout(
      
      60
      
        , TimeUnit.SECONDS)

             .pollingEvery(
      
      10
      
        , TimeUnit.SECONDS)

             .ignoring(NoSuchElementException.
      
      
        class
      
      
        );

 

WebElement element
      
      =
      
         wait.until(

        
      
      
        new
      
       ExpectedCondition<WebElement>
      
        () {

            @Override

            
      
      
        public
      
      
         WebElement apply( WebDriver d) {

                
      
      
        return
      
       d.findElement( By.id( " myDynamicElement "
      
         ));

            }

        }

);
      
    

方法功能:定位 id=' myDynamicElement' 的元素,超時等待時間為 60S ,每隔 10S 定位一次, 60s 內(nèi)遇到 NoSuchElementException 報錯忽略,繼續(xù)等待;若定位到元素,直接返回該頁面元素。

?

如果只是僅僅想判斷頁面是不是加載到某個地方了 , 就可以用第一種方法 ; 但如果需要得到某個 WebElement, 兩種方式都可以 , 只是第一種方式還需要再多一步獲取的操作 .

四.Wait

FluentWait類是Wait接口的實(shí)現(xiàn),直接使用wait接口可以更靈活的完成您需要的等待功能,例如

      Wait w = 
      
        new
      
      
         Wait(){



    @Override



    
      
      
        public
      
      
        boolean
      
      
         until() {



    
      
      
        return
      
      
         webElement.isDisplayed();



    }

};    
      
    

這種等待的方式 , 據(jù)說在加載 js 代碼的時候做判斷會比較方便 , 目前沒有調(diào)試成功。

?五、其他

1.等待頁面加載

      driver.manage().timeouts().pageLoadTimeout(100, SECONDS);
    

注解:

  • pageloadTimeout方法只適用于firefox瀏覽器,Chrome等其他瀏覽器并不適用,但我們可以自己實(shí)現(xiàn)一個定時器
  • 該方法設(shè)置頁面加載超時時間為100s

?

2.等待異步腳本加載

?

      driver.manage().timeouts().setScriptTimeout(100,SECONDS);
    

尚未調(diào)試通過

【slenium專題】Webdriver同步設(shè)置


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 一区二区三区不卡免费视频97 | 国产精品欧美亚洲日本综合 | 全黄裸片武则天一级第4季 亚洲一区国产 | 欧美人成片免费看视频不卡 | 在线色 | 手机av在线 | 国产精品久久久久久久四虎电影 | 无码免费人妻A片AAA毛 | 亚洲欧美第一页 | 日日操视频 | 久久久av| 日日麻批 | 免费在线小视频 | 新封神榜杨戬电影免费动画在线观看国语 | 夜班护士与医生啪 | 午夜在线看 | 成人尤物| 2一3sex性hd| 色在线观看视频 | 日韩五码在线 | 亚洲精品一区二区三区福利 | gvg668| 亚洲91| 国产精品极品美女自在线看免费一区二区 | 久久精品黄色 | 久久噜噜噜精品国产亚洲综合 | 自偷自拍三级全三级视频 | 日韩色区 | 国产高清美女一级毛片 | 亚洲国产免费 | 欧美成人激情视频 | 亚洲涩综合 | 日韩精品小视频 | 黄色网址你懂的 | 国产在视频线精品视频www666 | 中文字幕av在线播放 | 精品久久亚洲 | 日本高清视频在线播放 | 91网站免费观看直播 | 亚洲精品成人 | 91短视频网址 |