appium自動化測試等待的三種方法

來源:互聯網
上載者:User

標籤:poll   pytho   自動   指令碼   web   over   div   span   dom   

第一種  sleep():

設定固定休眠時間。python 的 time 包提供了休眠方法 sleep() ,匯入 time包後就可以使用 sleep()進行指令碼的執行過程進行休眠。

python

#匯入 time 包import timetime.sleep()

java

Thread.sleep(6000)  //強制等待6s

 

第二種  implicitly_wait():隱式等待

它是 webdirver 提供的一個逾時等待。隱式等待一個元素被發現,或一個命令完成。如果超出了設定時間仍未定位到元素則拋出異常。
#當使用了隱士等待執行測試的時候,如果 WebDriver沒有在 DOM中找到元素,將繼續等待,超出設定時間後則拋出找不到元素的異常
#換句話說,當尋找元素或元素並沒有立即出現的時候,隱式等待將等待一段時間再尋找 DOM,預設的時間是0
#一旦設定了隱式等待,則它存在整個 WebDriver 對象執行個體的聲明周期中,隱式的等到會讓一個正常響應的應用的測試變慢,
#它將會在尋找每個元素的時候都進行等待,這樣會增加整個測試執行的時間。

#implicitly_wait()方法比 sleep() 更加智能,後者只能選擇一個固定的時間的等待,前者可以在一個時間範圍內智能的等待。

python

self.driver.implicitly_wait(10)  #全域等待10s

java

driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS);

 

第三種  WebDriverWait():

同樣也是 webdirver 提供的方法。在設定時間內,預設每隔一段時間檢測一次當前。頁面元素是否存在,如果超過設定時間檢測不到則拋出異常。
詳細格式如下:

WebDriverWait(driver, timeout, poll_frequency=0.5, ignored_exceptions=None)
  • driver : WebDriver 的驅動程式(Ie, Firefox, Chrome 或遠程)
  • timeout :最長逾時時間,預設以秒為單位
  • poll_frequency :休眠時間的間隔(步長)時間,預設為 0.5 秒
  • ignored_exceptions :逾時後的異常資訊,預設情況下拋 NoSuchElementException 異常。

WebDriverWai()一般和 until()或 until_not()方法配合使用,下面是 until()和 until_not()方法的說明。

  • until(method, message=’’):調用該方法提供的驅動程式作為一個參數,直到傳回值不為 False。
  • until_not(method, message=’’):調用該方法提供的驅動程式作為一個參數,直到傳回值為 False。

python

from selenium.webdriver.support.ui import WebDriverWaitelement = WebDriverWait(driver, 10).until(lambda x: x.find_element_by_id(“someId”))is_disappeared = WebDriverWait(driver, 30, 1, (ElementNotVisibleException)).until_not(lambda x: x.find_element_by_id(“someId”).is_displayed())

java

WebDriverWait wait = new WebDriverWait(driver, 60);WebElement e = wait.until(new ExpectedCondition<WebElement>(){ @Override public WebElement apply(WebDriver d) { return d.findElement(By.xpath("//android.widget.RelativeLayout[@index=‘2‘]")); }});e.click();//WebDriverWait類的構造方法接受了一個WebDriver對象和一個等待最長時間(60秒)。然後調用until方法,其中重寫ExpectedCondition介面中的apply方法,
讓其返回一個WebElement,即載入完成的元素,然後點擊。預設情況下,WebDriverWait每500毫秒調用一次ExpectedCondition,直到有成功的返回,當然如果超過設定的值
還沒有成功的返回,將拋出異常

 

appium自動化測試等待的三種方法

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.