欧美三区_成人在线免费观看视频_欧美极品少妇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條評論
主站蜘蛛池模板: 成人午夜视频在线观看 | 男人的天堂在线视频 | 人人爽久久涩噜噜噜蜜桃 | 国产在亚洲线视频观看 | 国产亚洲欧美日本一二三本道 | 人人搞人人干 | 欧美一区二区免费 | 久久精品国产2020 | 国产色视频一区 | 激情伊人 | 精品久久久久一区二区国产 | 久久精品免费视频观看 | 婷婷开心六月久久综合丁香 | 亚洲综合干 | 亚洲精品第一国产综合高清 | 高清一区二区亚洲欧美日韩 | 欧美日韩一本 | 成人欧美一区二区三区在线播放 | 91大神精品长腿在线观看网站 | 欧美黄色一区 | 亚洲欧美日韩精品久久 | 久久久一区二区精品 | 色哟哟哟在线精品观看视频 | 精品卡1卡二卡3卡 | 亚洲一区二区三区视频 | 久久久免费电影 | 91seseav| 欧美成人全部费免网站 | 国产色吧 | 天天骑夜夜操 | 激情综合网婷婷 | 精品国产一区二区三区成人影院 | 日韩电影免费在线观看中文字幕 | 美国免费一级片 | 亚洲成人精品 | 日韩免费视频 | 欧美日韩精品国产一区二区 | 国产视频视频 | 九九视频精品全部免费播放 | 毛片一区二区 | 91久久夜色精品国产九色 |