1. 程式人生 > >selenium 顯示等待,隱士等待

selenium 顯示等待,隱士等待

顯式等待是,先於程式碼的繼續執行,而定義的等待某個條件發生的程式碼。最糟糕的情況是Thread.sleep(),設定條件為一個需要等待的精確時間段。有一些提供的便利方法,可以幫助你編寫程式碼僅僅等待需要的時間。WebDriverWait與ExpectedCondition的結合是一種可以完成這個目標的方式。

隱含等待,其實就相當於設定全域性的等待,在定位元素時,對所有元素設定超時時間。
一般來說,我們使用顯式等待。

在判斷新浪微博文章刪除問題時。遇到點問題。由於會跳轉兩次。指令碼頁面>錯誤頁面>註冊頁面。
等待的話。。隨時可能獲取三個頁面中的其中一個頁面的資訊。所以用顯示等待。大約在第二個頁面時,獲取元素判斷
、

1.顯式等待

顯式等待,就是明確的要等到某個元素的出現或者是某個元素的可點選等條件,等不到,就一直等,除非在規定的時間之內都沒找到,那麼就跳出Exception.

如:

1 new WebDriverWait(driver, 15 ).until(
2 ExpectedConditions.presenceOfElementLocated(By.cssSelector( "css locator" ))
3 );

這裡,15是要等待的秒數.如果沒有滿足until()方法中的條件,就會始終在這裡wait 15秒,依然找不到,就丟擲異常.

也可以這樣寫:

01
WebDriver driver = new FirefoxDriver();
03 WebElement e = ( new WebDriverWait( driver, 10 )) .until(
04 new ExpectedCondition< WebElement>(){
05 @Override
06 public WebElement apply( WebDriver d) {
07 return d.findElement( By.id( "id locator" ));
08 }
09 }
10 );

這樣就通過回撥函式,直接獲得了這個WebElement.也就是頁面元素.

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

1 Wait w = new Wait(){
2 @Override
3 public boolean until() {
4 return webElement.isDisplayed();
5 }
6 };

2.隱式等待

1 driver.manage().timeouts().implicitlyWait(second, TimeUnit.SECONDS);

隱式等待, 此處的隱式等待是針對Driver 每次執行命令的 最長執行時間也可以理解為超時時間,  一些人對此處有誤解,認為是讓Driver等一段時間,  確實某些時候能讓Driver等一段時間, 但是影響是全域性的,每次Driver執行 找不到元素都會等待此處設定的時間,  假設某處將此值設定的太長,必須在執行完成之後還原回來,否則判斷一個元素是否存在的時候,就會遇到很坑爹的問題。   改進後的方法如下:

WebDriver會進行一個隱式等待,但引數只有時間,這就導致我需要什麼元素出現,我不一定能等到它,

  private boolean isElementPresent(By by) {
    try {
      driver.manage().timeouts().implicitlyWait(1, TimeUnit.SECONDS);
      driver.findElement(by);
      return true;
    } catch (NoSuchElementException e) {
      return false;
    }
  }

得不到某個元素,我們就延遲一下...

3.執行緒休眠

1 Thread.sleep()

相關推薦

selenium 顯示等待隱士等待

顯式等待是,先於程式碼的繼續執行,而定義的等待某個條件發生的程式碼。最糟糕的情況是Thread.sleep(),設定條件為一個需要等待的精確時間段。有一些提供的便利方法,可以幫助你編寫程式碼僅僅等待需要的時間。WebDriverWait與ExpectedCondition的結合是一種可以完成這個目標的方式。

selenium中的顯示等待隱示等待強制等待

一段 elf family 就會 周期 輸入 cit csdn AD 我們在實際使用selenium或者appium時,等待下個等待定位的元素出現,特別是web端加載的過程,都需要用到等待,而等待方式的設置是保證腳本穩定有效運行的一個非常重要的手段,在seleni

強制等待&隱士等待&顯示等待&元素定位方法封裝

前言 問題 學習selenium的同學估計大多數都遇見過一個問題 明明頁面已經精準的定位到了元素,但是執行指令碼的時候卻經常報錯沒找到元素。其實原因很簡單,就是指令碼執行的速度很快,而瀏覽器載入頁面的時候由於網速,css渲染,JS等各種原因導致頁面載入緩慢,所以當指令碼執行到定位一個元素的程式碼時,頁面

selenium-java解決一些加了顯性等待和隱性等待都不好使的情況以及給UI自動化加上暫停功能

event until rdo 暫停 ati ntop 面板 -1 不想 最近在UI自動化時遇到了,上一步成功操作後沒有響應的情況(動畫加載和瀏覽器加載導致實際沒有問題),導致下一步無法成功操作,所有想在嘗試2次操作後再次進行上一步操作解決這種情況導致的錯誤(其實是不想每一

selenium 顯示等待

tor dom 固定 except https select 著作權 不可見 pre Explicit Waits(顯示等待) 顯示等待的代碼定義了等待條件,只有該條件觸發,才執行後續代碼。最垃圾的顯示等待就是使用 time.sleep(),這種情況是指定了固定的等待時

Python selenium —— 一定要會用selenium等待三種等待方式解讀(轉)

我們 嚴重 -s ber 約定 fire locate ror nbsp 發現太多人不會用等待了,博主今天實在是忍不住要給大家講講等待的必要性。 很多人在群裏問,這個下拉框定位不到、那個彈出框定位不到…各種定位不到,其實大多數情況下就是兩種問題:1 有frame,2 沒有加

pyhon學習之selenium模擬等待直到....才等待載入。

driver.implicitly_wait(30) driver.find_element_by_id("su").click() # Timeouts def implicitly_wait(self, time_to_wait): """ Se

Python selenium —— 一定要會用selenium等待三種等待方式解讀

發現太多人不會用等待了,博主今天實在是忍不住要給大家講講等待的必要性。 很多人在群裡問,這個下拉框定位不到、那個彈出框定位不到…各種定位不到,其實大多數情況下就是兩種問題:1 有frame,2 沒有加等待。殊不知,你的程式碼執行速度是什麼量級的,而瀏覽器載入渲

Python selenium ---一定會用selenium等待三種等待方式解讀

很多人在群裡問,這個下拉框定位不到、那個彈出框定位不到…各種定位不到,其實大多數情況下就是兩種問題:1 有frame,2 沒有加等待。殊不知,你的程式碼執行速度是什麼量級的,而瀏覽器載入渲染速度又是什麼量級的,就好比閃電俠和凹凸曼約好去打怪獸,然後閃電俠打完回來之後問凹凸曼你

Python selenium 自動化測試一定要會用selenium等待三種等待方式解讀

發現太多人不會用等待了,博主今天實在是忍不住要給大家講講等待的必要性。 很多人在群裡問,這個下拉框定位不到、那個彈出框定位不到…各種定位不到,其實大多數情況下就是兩種問題: 1 有frame,2 沒有加等待。 殊不知,你的程式碼執行速度是什麼量級的,而瀏覽器載入渲染速度

selenium 顯示等待例項 org.openqa.selenium.support.ui.FluentWait

Example 1 Project: easycukes   File: SeleniumHelper.java   View source code 7 votes /** * @param by * @return */ public sta

一定要會用selenium等待三種等待方式必會

轉載地址:http://blog.csdn.net/huilan_same/article/details/52544521,感謝博文,學習了原文:發現太多人不會用等待了,博主今天實在是忍不住要給大家講講等待的必要性。很多人在群裡問,這個下拉框定位不到、那個彈出框定位不到…各

Selenium顯示等待和隱式等待

1、selenium的顯示等待原理:顯示等待,就是明確的要等到某個元素的出現或者是某個元素的可點選等條件,等不到,就一直等,除非在規定的時間之內都沒找到,那麼久跳出Exception(簡而言之,就是直到元素出現才去操作,如果超時則報異常)WebDriverWait(drive

Selenium等待函式--強制等待,顯示等待,隱式等待

強制等待,顯示等待,隱式等待方法 強制等待: 方法: Thread.sleep();一旦呼叫一直等下去 隱式等待--適用於全域性性,會在限定時間一直找下去 方法:

Selenium中的幾種等待方式需特別注意implicitlyWait的用法

最近在專案過程中使用selenium 判斷元素是否存在的時候 遇到一個很坑爹的問題, 用以下方法執行的時候每次都會等待很長一段時間,原因是因為對selenium實現方法瞭解不足導致一直找不到解決方法。   private boolean isElementPresent(By by) {      tr

delphi 調用外部exe 等待調用程序運行結束

name true lag 最小化 object llc try priority star function TFmain.RunWait(FileName: string; Visibility: Integer): THandle;var   zAppName:

selenium webdriver 的三種等待方式

定位 .get wait expected blank sin down 默認 對象實例 1、顯式等待 一個顯式等待是你定義的一段代碼,用於等待某個條件發生然後再繼續執行後續代碼。 from selenium import webdriver from selenium

Selenium自動化測試中的等待

功能 動態生成 耗時 頁面元素 部分 ive spa quest 實現 自動化測試過程中的等待我習慣分為兩種固定等待和動態等待。 固定等待就是直接采用sleep的方式讓代碼等待固定時間。這是比較簡單的等待方式,是一種不推薦使用但是在某些特定條件下最快能夠解決問題的等待

Selenium常用的三種等待方式

Selenium Selenium等待 UI自動化 Selenium三種等待方式 等待 在做自動化測試,設計測試用例的時候,有時下一步的操作會依賴上一步的結果或者內容,上一步操作成功之後才能進行下一步操作等,這時候,我們就需要使用等待,來判斷上一步操作是否完成,什麽時候可以進行下一步操作。如果

java 異步查詢轉同步多種實現方式:循環等待CountDownLatchSpring Even

null line [] 返回 編寫 nal books ans 異步查詢 異步轉同步 業務需求 有些接口查詢反饋結果是異步返回的,無法立刻獲取查詢結果。 正常處理邏輯 觸發異步操作,然後傳遞一個唯一標識。 等到異步結果返回,根據傳入的唯一標識,匹配此次結果。 如何轉