1. 程式人生 > >testng如何實現等待(軟等待、智慧等待)

testng如何實現等待(軟等待、智慧等待)

今天給大家介紹一種等待方法,我們之前寫的等待,如:Thread.sleep(1000);我們稱之為硬等待,也就是說你設定等待多長時間就是多長時間,這種等待對於做自動化來說,特別浪費時間,我們一般很少用到。

假如在做自動化過程中,有的頁面可能由於伺服器或網速等等原因你是不知道它什麼時候才會加載出來的,這種情況你如果使用硬等待,用例失敗的機率特別大,所以這種方法就不可取了,我今天要給大家介紹一種智慧等待的方法,也就是說用上這個方法之後,它會在你設定的超時範圍內去輪詢等待介面上是否出現了這個元素,一旦出現立刻執行動作;如果在指定超時範圍之內沒有出現,則丟擲異常。這樣就大大減少了我們的等待時間,節約時間就是節約成本

一、首先要寫一個判斷元素是否存在的方法,程式碼如下:

// 判斷元素是否可用
	public static Boolean waitElementIsEnabledBy(By by) {
		try {
			WebDriver waitDriver = driver;
			long waitTime = 20;
			waitDriver.manage().timeouts().implicitlyWait(waitTime, TimeUnit.SECONDS);
			(new WebDriverWait(waitDriver, waitTime)).until(ExpectedConditions.elementToBeClickable(by));
			return true;
		} catch (Exception e) {
			return false;
		}
	}

ps:waitDriver=driver(這個driver是我操作用到的driver),要把你的driver傳給waitDriver,否則無法實現控制;這裡我給的超時時間waitTime是20s

二、實現智慧操作,舉例如下:

waitElementIsEnabledBy(By.xpath("//*[@id='allheader']/div/div[1]/div/div/div[2]/a"));
driver.findElement(By.xpath("//*[@id='allheader']/div/div[1]/div/div/div[2]/a")).click();// 點選退出

ps:waitElementIsEnabledBy是我們判斷元素是否存在的方法,以上是我判斷一個退出按鈕是否存在,如果存在立刻執行點選動作,如果不存在,超出20s後則丟擲異常,返回false

提示:只需要在你不知道某個頁面需要載入多長時間的地加此等待就可以,也可以把其他操作的硬等待也用此方法替換掉,提升自動化的速度和質量,節約時間和成本!

相關推薦

機房收費系統之實現元件圖部署圖

在軟體建模中,使用用例圖可以推斷系統希望的行為;使用類圖可以描述系統的詞彙;使用時序圖、元件圖、狀態圖和活動圖可以說明這些詞彙中的事物如何相互作用以完成某些行為。 在完成系統的邏輯之後,下一步要定義設計的物理實現,如何可以執行檔案、庫、表、檔案和文件等。對面向物件系統的物理

UML--實現元件圖配置圖

一、元件圖(構件圖) (一)定義 元件圖(Component Diagram)又稱為構件圖廟會上軟體元件以及元件之間的關係,元件本身是程式碼的物理模組,元件圖則顯示了程式碼的結構。 (二)組成 元件圖=元件+介面+關係 (1)元件: 元件是定義了良好

testng如何實現等待等待智慧等待

今天給大家介紹一種等待方法,我們之前寫的等待,如:Thread.sleep(1000);我們稱之為硬等待,也就是說你設定等待多長時間就是多長時間,這種等待對於做自動化來說,特別浪費時間,我們一般很少用

哈工大 件構造課程 復習考點總結第六七章

產品 職位 err vat abstract 生產 輸入 特定 耦合 可維護性的常見度量指標 Cyclomatic complexity 圈復雜度 Lines of Code LoC 代碼行數 Maintainability Index (MI) 可維護性指數 Depth

vue+axios 前端實現登錄攔截路由攔截http攔截

itl sta outer gin get alt aud 利用 業務 一、路由攔截 登錄攔截邏輯 第一步:路由攔截 首先在定義路由的時候就需要多添加一個自定義字段requireAuth,用於判斷該路由的訪問是否需要登錄。如果用戶已經登錄,則順利進入路由, 否則就進入登錄頁

VPN的實現技術隧道技術加密技術祕鑰管理技術身份認證技術

為了在Internet等公共網路基礎設施上高效、安全的實現資料傳輸,VPN綜合利用了隧道技術、加密技術、祕鑰管理技術和身份認證技術。 1、隧道技術是VPN的核心技術,VPN的所有實現都是依賴於隧道。隧道主要利用協議的封裝來實現的。即用一種網路協議來封裝另一種網路協議的報文。   &

使用 MultipartFile 結合 formData物件Blob物件 實現圖片上傳功能簡介

圖片上傳功能的具體實現(當然檔案也一樣): MultipartFile ,這個類可以完全接收到前臺傳過來的圖片資料。 MultipartFile 通過 MultipartFile .transferTo( new File()), 僅需要這步驟,就可以把圖片存到伺

安卓圓角背景遮罩。覆蓋實現方式適用於所有控制元件

1.工具類直接用(已經改好) package com.etwod.yulin.t4.unit; import android.content.Context; import android.content.res.TypedArray; import android.graphics.Bitmap;

考】——軟體工程基礎知識資料流程圖資料字典

資料流程圖(DFD)???——》一種便於使用者理解、分析系統資料流程的圖形工具;???——》擺脫了系統的物理內容,精確地在邏輯上描述系統的功能、 輸入、輸出和資料儲存等,是系統邏輯模型的重要組成部分 ; 資料流圖的基本圖形元屬???——》資料流(data flow)、加

10本區塊鏈熱門圖書應用開發智慧合約等免費送!

歡迎訪問網易雲社群,瞭解更多網易技術產品運營經驗。   “網際網路之後就是區塊鏈時代,區塊鏈是實現未來跟蹤經濟的關鍵技術。”世界上真的存在 100% 去中心化的系統嗎?區塊鏈到底是什麼?網易雲社群聯合博文視點為大家帶來區塊鏈熱門圖書專場,這些書籍將引領我們一起去從技術層面以

js實現累加閉包柯里化面試經驗分享

閉包 今天面試需要手寫一段程式碼實現 var a = sum(); a.add(1); a.add(2); a.add(3); a.add(4); a.getResult();//打印出10

JS實現排序演算法氣泡排序快速排序

const a = [21, 3, 242, 3432, 13, 13, 123, 4, 35, 22, 1]; // 氣泡排序 // 核心思想:每次比較相鄰的數,如果它們順序錯誤,就把它們交換過來。如同氣泡一樣往後翻滾。 // 最外層的迴圈,每次至少要讓一個元素歸位。 /

斐波那契數列的三種實現方式遞迴迴圈矩陣

《劍指offer》裡講到了一種斐波那契數列的 O(logN) 時間複雜度的實現,覺得挺有意思的,三種方法都記錄一下。 一、遞迴     一般來說遞迴實現的程式碼都要比迴圈要簡潔,但是效率不高,比如遞迴計算斐波那契數列第n個元素。 long long Fibonacci

分享知識-快樂自己:N及分類雙重迴圈遞迴實現

實現多級分類: 1、雙重 for 迴圈實現 N 及分類 /*** * 執行遍歷 * * @param menus * 所有許可權列表集合 * @param list * 指定角色查詢

Jquery實現input keydown回車觸發登入事件任意觸發指定觸發

一、說明 1、任意觸發:不管當前焦點在哪個input輸入框,只要回車就觸發事件,如登入介面。2、指定觸發:指定某個input輸入框回車時才觸發事件。 二、實現1、html程式碼部分<body

Java+Selenium3框架設計準備篇4-TestNG實現DDT2

本篇繼續介紹用TestNG和excel檔案實現DDT場景。我們需要準備一個test-data.xlsx檔案,並且放到eclipse專案下。 1.準備test-data.xlsx檔案 2.利用POI讀取excel檔案內容,並儲存到一個二維陣列中。 package demo;

全局袋裏神器KKcap遊戲加速等的配置和使用的教程說明

代理服 使用步驟 神器 完全 方法 1.5 外網 images zip 首先說一下這款KKCap遊戲加速器操作使用比較簡單,是完全免費的,使用這款kkcap軟件之前,請先擁有一個可用的SS/×××賬號並且如果你要玩遊戲,那麽最好支持UDP轉發,否則部分遊戲可能會無法鏈接。

Java 關於支付的實現微信支付寶

在開發中我們經常會使用到支付功能,目前國內使用頻率高的支付方式有微信支付和支付寶支付,apple pay和三星pay沒有深入研究過,我們暫時不考慮這兩個支付。 下面我們來先講講支付的基本流程 A、客戶端發起支付訂單     不管是web端還是手機端,發起訂單是都有對你發起的

Trie樹字典樹字首樹面向物件思想C++實現

Trie樹的功能、思想、實現都寫在程式碼註釋中了 使用: Trie trie = new Trie([TypeCase]); trie. TypeCase= Bit //二進位制 Number // 0-9數字 LowerCase //小寫字母

二階切比雪夫多項式實現scala版python版

一維二階切比雪夫多項式和二維二階切比雪夫多項式 scala版參考: http://hxfcalf.blog.163.com/blog/static/21575548201373124214412 http://hxfcalf.blog.163.com/blog/static