1. 程式人生 > >selenium 常用的顯式等待

selenium 常用的顯式等待

1.例項的html原始碼

<html>
<head>
	<title>你喜歡的水果</title>
</head>
<body>
	<p>請選擇你愛吃的水果</p><br>
	<select name='fruit'>
	<option id='peach' value ='taozi'>桃子</option>
	<option id='watermelon' value='xigua'>西瓜</option></select>
	<br>
	<input type='checkbox'>是否喜歡吃水果?</input><br><br>
	<input type="text" id ="text" value="今年夏天西瓜相當甜!">文字框</input>
</body>
</html>

2.java例項程式碼
//宣告一個webdriverWait物件,設定觸發條件的最長等待時間為10秒
		WebDriverWait wait = new WebDriverWait(driver, 10);
		//呼叫ExpectedConditions的titleContains方法判斷頁面Title屬性是否包含“水果”兩字
		wait.until(ExpectedConditions.titleContains("水果"));
		
		System.out.println("網頁標題出現了水果的關鍵字");
		
		//獲得頁面下拉列表中的桃子選項物件
		WebElement select = driver.findElement(By.xpath("//option[@id='peach']"));
		//呼叫ExpectedConditions的elementToBeSelected方法,判斷桃子是否處於選定狀態
		wait.until(ExpectedConditions.elementToBeSelected(select));
		
		System.out.println("下拉列表的選項桃子目前處於選中狀態");
		
		/*呼叫expectContains的elementtobeclickable方法判斷頁面的複選框是否可見,並且可以被單擊*/
		wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//input[@type='checkbox']")));
		System.out.println("頁面複選框處於顯示可被單擊的狀態");
		
		//呼叫ExpectedContditions的presenceOfElementLocated的方法判斷標籤p是否在頁面中
		wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath("//p")));
		System.out.println("頁面的P標籤元素已顯示");
		
		WebElement p = driver.findElement(By.xpath("//p"));
		
		wait.until(ExpectedConditions.textToBePresentInElement(p, "愛吃的水果"));
3.自定義顯式等待
try {
			//顯式等待判斷是否可以從頁面獲取輸入文字的輸入框物件,乳溝可以獲取,則執行後續邏輯測試
			WebElement textIputBox = (new WebDriverWait(driver, 10)).until(new ExpectedCondition<WebElement>() {
				@Override
				public WebElement apply(WebDriver d){
					return d.findElement(By.xpath("//*[@type='text']"));
				}
			});
			//斷言獲取頁面輸入框中是否包含“今年的西瓜想當甜!”這幾個關鍵字
			Assert.assertEquals("今年夏天西瓜相當甜!", textIputBox.getAttribute("value"));
			
			//判斷頁面的P標籤中是否包含愛吃兩個字,若包含則執行後續的測試邏輯
			Boolean containTextFlag =(new WebDriverWait(driver, 10)).until(new ExpectedCondition<Boolean>() {
				@Override
				public Boolean apply(WebDriver d){
					return d.findElement(By.xpath("//p")).getText().contains("愛吃");
				}
			});
			Assert.assertTrue(containTextFlag);
			
			//顯式等待判斷頁面的文字輸入框是否可見,若可見則執行後續測試邏輯
			Boolean inputBoxVisibleFlag = (new WebDriverWait(driver, 10)).until(new ExpectedCondition<Boolean>() {
				public Boolean apply(WebDriver d) {
					return d.findElement(By.xpath("//*[@type='text']")).isDisplayed();
				}
			});
			Assert.assertTrue(inputBoxVisibleFlag);
		} catch (NoSuchElementException e) {
			Assert.fail("頁面上的輸入框元素未被找到!");
			e.printStackTrace();
			// TODO: handle exception
		}



相關推薦

selenium 常用等待

1.例項的html原始碼 <html> <head> <title>你喜歡的水果</title> </head> <body> <p>請選擇你愛吃的水果</p><br&

selenium python 和隱等待方法

http load python exe keys users ive 匿名函數 間隙 1 # -*- coding:utf-8 -*- 2 from selenium import webdriver 3 from selenium.webdriver.commo

等待-----Selenium快速入門(十)

edr gif tex 通過 輸出信息 except 顯式 eve span   上一篇說了元素定位過程中的隱式等待,今天我們來探討一下顯示等待。顯式等待,其實就是在使用WebDriverWait這個對象,進行等待。顯式等待對比隱式等待,多了一些人性化的設置,可以說是更細化

selenium等待和EC(expected_conditions)模組

    很多人都有這種經歷,selenium腳本當前執行沒問題,過了一段時間再執行就報錯了,然後過幾天又好了。其中的原因估計60%的人都知道,是因為元素載入這塊有問題。通常的解決方案就是加上sleep或者隱式等待(implicitly_wait),後面發現這種辦法太浪費時間了,測試用例一旦過多就要抓狂了,並且

Selenium中的隱等待等待

在Selenium中,“等待”在執行測試中起著重要作用。在本文中,您將學習Selenium中“隱式”和“顯式”等待的各個方面。 在本文中,您將學習 - 2. 隱瞞等待 3. 明確等待 4. 流利的等待 為什麼我們需要在Selenium中等待? 大多數Web應用

Selenium+Python測試元素等待--等待、隱等待

''' 元素等待 顯示等待是針對某一個元素進行相關等待判定 隱式等待不針對某一個元素進行等待,而是全域性元素等待 --------------------------------------------- WebDriverWait--顯示等待針對元素時使用 expected

selenium的隱等待等待及cookie操作

頁面等特: 現在的網頁越來越多采用了Ajax技術,這樣程式便不能確定何時某個元素完全加載出來,入股實際頁面等待時間過長導致某個dom元素還沒出來,但是你的程式碼直接使用了這個 Webelement,那麼就會上Nullpointerf的異常,為了解決這個問題,所以 Selenium提 供了兩種等待方

selenium-webdriver中的等待與隱等待

在selenium-webdriver中等待的方式簡單可以概括為三種: 1 匯入time包,呼叫time.sleep()的方法傳入時間,這種方式也叫強制等待,固定死等一個時間 2 隱式等待,直接呼叫implicitly_wait()方法,傳入等待時間,比如implicitly_wait(10),就代表最長等待

Selenium+Java(六)Selenium 強制等待等待、隱實等待

前言 在實際測試過程中,由於網速或效能方面的原因,開啟相應的網頁後或在網頁上做了相應的操作,網頁上的元素可能不會馬上加載出來,這個時候需要在定位元素前等待一下,等元素加載出來後再進行定位,根據實際使用選擇需要的等待方式。 一、強制等待  強制等待是利用time模組的sleep方法來實現,最簡單粗暴的

Selenium系列(六) - 強制等待、隱等待等待詳細介紹和原始碼解讀

如果你還想從頭學起Selenium,可以看看這個系列的文章哦! https://www.cnblogs.com/poloyy/category/1680176.html   其次,如果你不懂前端基礎知識,需要自己去補充哦,博主暫時沒有總結(雖然我也會,所以我學selenium就不用複習前端了哈哈哈.

定位下拉框,這裡遇到一些問題,沒有新增等待會導致找不到頁面元素,折騰了一會兒

from selenium.webdriver import ActionChainsdriver.get("http://baidu.com")link=driver.find_element_by_link_text('設定')ActionChains(driver).move_to_element(li

selenium】 隱等待與顯示等待

簡介:總結selenium的隱式等待與顯式等待 隱式等待 設定一個預設的操作等待時間,即每個操作的最大延時不超過該時間 常用的隱式等待 //頁面載入超時時間 driver.manage().timeouts().pageLoadTimeout(40, Tim

等待的坑”記一個讓我糾結了半年的問題。

一入UI深似海,從此穩定是路人。入UI坑這麼久以來,深受穩定性的困擾。深知顯式等待是指令碼穩定性的一大關鍵,卻奈何一直用不好,只能用著執行緒等待,慢慢的執行緒等待的問題也暴露了,最後不得以再來研究顯式等待。以前用顯式等待一直都是偶爾能等到元素,偶爾等不到元素,讓我很是困惑,最

1129UI自動化測試經驗分享-等待(三)指令碼設定元素等待【乾貨】

分享到這第三篇了,要說點重點的、大家很願意知道的:在腳本里到底要如何設定元素等待呢? 一)Web指令碼設定元素等待 我和我已離職的同事都喜歡 將元素等待和定位元素結合在一起。 同事A的指令碼(已做修改): def find_element123(self, key,

1128UI自動化測試經驗分享-等待(二)expected_conditions模組、visibility_of_element_located(locator)

expected_conditions模組 提供的預期條件判斷類【模組包含一套預定義的條件集合】,大大方便了 WebDriverWait 的使用。 一)expected_conditions模組 這兒是官方文件 https://seleniumhq.github.io/s

1127UI自動化測試經驗分享-等待(一)WebDriverWait類、until()方法

最近忙於其他事情,部落格就沒那麼多時間來寫。原本想先分享下三種等待方式,但是隱式等待我還有點不太懂。這次先分享顯式等待。 一)顯式等待 WebDriverWait() 顯示等待,是針對於某個特定的元素設定的等待時間。 原始碼: POLL_FREQUENCY = 0.5 #

等待

匯入模組 from selenium import webdriver from selenium.webdriver.support import expected_conditions from selenium.webdriver.support.w

元素等待————等待

############################################# # 顯示等待,使用的is_displayed()方法 # ##################

python網路資料探勘--JS隱等待等待

第一部分:隱式等待和顯式等待      隱式等待和顯式等待的不同之處在於,隱式等待是等DOM中某個狀態發生改變後再繼續執行程式碼(沒有明確的等待時間,但是有最大等待期限,只要在時限內就可以),而顯式等待明確設定了等待時間,如上篇文章中等待三秒鐘。在隱式等待中,DOM被觸發的

鎖(四)Lock的等待通知機制Condition

lock == 等待隊列 urn 一個 AI 移除 等待時間 font ?? 任意一個Java對象,都擁有一組監視器方法(定義在根類Object上),主要包括:wait( )、wait(long timeout)、notify()、notifyAll()方法;這些方法與關鍵