鍍金池/ 教程/ Python/ Synchronization 同步
log4j日志
Selenium IDE測(cè)試創(chuàng)建
Selenium - IDE模式匹配
Selenium教程
多瀏覽器測(cè)試
Selenium IDE下載
Selenium用戶(hù)擴(kuò)展
鍵盤(pán)操作
捕捉屏幕截圖
Selenium網(wǎng)格
Selenium TestNG
Selenium定位器
查找所有鏈接
Selenium測(cè)試設(shè)計(jì)技術(shù)
鼠標(biāo)操作
下拉框交互
Selenium IDE驗(yàn)證點(diǎn)
Selenium IDE- 不同的瀏覽器
Selenium RC
多選擇操作
復(fù)選框交互
單選按鈕互動(dòng)
捕捉視頻
拖放
Selenium IDE 測(cè)試
Synchronization 同步
異常處理
Selenium 環(huán)境安裝設(shè)置
Selenium概述
用戶(hù)交互
Selenium Webdriver
Selenium IDE
Selenium頁(yè)面對(duì)象模型
Selenium IDE 工具特點(diǎn)
使用Excel數(shù)據(jù)驅(qū)動(dòng)
Selenium - Selenese命令

Synchronization 同步

同步

要執(zhí)行腳本,我們需要進(jìn)行適當(dāng)?shù)牟僮骱?,等待?yīng)用程序之間的同步。來(lái)看看以達(dá)到同樣的方式。

THREAD.SLEEP

Thread.sleep代碼是一個(gè)靜態(tài)的等待,不是在腳本中使用,因?yàn)樗菬o(wú)需睡眠狀態(tài)的一個(gè)很好的方法。

Thread.Sleep(1000); //Will wait for 1 second.

顯式等待

一個(gè)明確的等待,等待某個(gè)條件進(jìn)一步處理之前發(fā)生。它主要用于當(dāng)我們想要點(diǎn)擊或采取行動(dòng)的對(duì)象,一旦它是可見(jiàn)的。

WebDriver driver = new FirefoxDriver();
driver.get("Enter an URL"S);
WebElement DynamicElement = (new WebDriverWait(driver, 10)).until(ExpectedConditions.presenceOfElementLocated(By.id("DynamicElement")));

隱式等待

隱式等待的情況下,如果網(wǎng)絡(luò)驅(qū)動(dòng)器找不到,因?yàn)樗牟豢捎眯缘牧⒓吹膶?duì)象。webdriver將等待指定的隱含的等待時(shí)間,也不會(huì)嘗試在指定時(shí)間內(nèi)找到的元素了。一旦指定的時(shí)間限制被超越,webdriver將嘗試再次搜索該元素的最后一面。如果成功,將繼續(xù)進(jìn)行執(zhí)行,但如果失敗,它會(huì)拋出異常。這是一種全局的等待,這意味著這種等待是適用于整個(gè)驅(qū)動(dòng)程序。因此,硬編碼這種等待更長(zhǎng)的時(shí)間時(shí)期將阻礙該腳本執(zhí)行時(shí)間。

WebDriver driver = new FirefoxDriver();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.get("Enter an URL");
WebElement DynamicElement = driver.findElement(By.id("DynamicElement"));

流利等待

FluentWait用于當(dāng)webelement可以出現(xiàn)在5秒或者甚至它可以采取90秒。在這種情況下,我們定義的時(shí)間等待的狀態(tài)的最大數(shù)量,以及與該查詢(xún)的對(duì)象狀態(tài)的是否存在等的頻率。

讓我們假定,我們將60秒可用一個(gè)元素在網(wǎng)頁(yè)上,但每10秒檢查一次它的存在。

Wait wait = new FluentWait(driver)
  .withTimeout(60, SECONDS)
  .pollingEvery(10, SECONDS)
  .ignoring(NoSuchElementException.class);
WebElement dynamicelement = wait.until(new Function<webdriver,webElement>() 
{
  public WebElement apply(WebDriver driver) 
  {
  return driver.findElement(By.id("dynamicelement"));
  }
 }
);