1、什麼是元素等待?
在定位頁面元素時如果沒找到,會在指定時間內一直等待的過程
2、為什麼需要元素等待
3、三種元素等待型別
強制等待
隱式等待
顯式等待
4、隱式等待
概念: 定位元素時,如果能定位到元素則直接返回該元素,不觸發等待;
如果不能定位到該元素,則間隔一段時間後再去定位元素;
如果在達到最大時長時還沒有找到指定元素(無法控制時間),則丟擲元素不存在的異常 nosuchelementexception
實現方式:
方法:driver.implicitly_wait(timeout)
(timeout:為等待最大時長,單位:秒)
說明:隱式等待為全域性設定(只需要設定一次,就會作用於所有元素)
注意:1、隱式等待是全域性有效,只需要設定一次就行
2、當隱式等待被啟用時,雖然目標元素出現了,但是當前頁面的其他元素未載入完成,而繼續等待,增加**的執行時長
5、顯式等待
概念:定位指定元素時,如果能定位到元素則直接返回該元素,不觸發等待;
如果不能定位到該元素,則間隔一段時間後再去定位元素;
如果在達到最大時長時還沒有找到指定元素,則拋出超 時異常 timeoutexception 。
1. 導包 等待類 --> from selenium.webdriver.support.wait importwebdriverwait
2. webdriverwait(driver, timeout, poll_frequency=0.5)
1). driver:瀏覽器驅動物件
2). timeout:超時的時長,單位:秒
3). poll_frequency:檢測間隔時間,預設為0.5秒
3. 呼叫方法 until(method):直到...時
1). method:函式名稱,該函式用來實現對元素的定位
2). 一般使用匿名函式來實現:lambda x: x.find_element_by_id("
usera")
4. element = webdriverwait(driver, 10, 1).until(lambda x: x.find_element_by_id("
usera")
)
例項**:
importtime
from selenium import
webdriver
from selenium.webdriver.support.wait import
webdriverwait
driver =webdriver.firefox()
driver.get(
"file:///d:/webautotest/page/註冊a.html")
element = webdriverwait(driver, 10, 1).until(lambda x: x.find_element_by_id("
usera"))
element.send_keys(
"admin")
time.sleep(3)
driver.quit()
顯式等待和隱式等待區別:
隱式等待為全域性元素,顯式等待為單個元素有效
隱式等待直接通過驅動物件呼叫,顯式等待方法封裝在webdriverwait類中
達到最大超時時長後丟擲的異常不同:隱式為nosuchelementexception,顯式等待為timeoutexception
6、強制等待
sleep()
selenium自動化測試(七) 元素等待
當瀏覽器在載入頁面時,頁面上的元素並不是同時被載入完的,就給定位增加了困難。webdriver提供了兩種型別的等待 顯式等待和隱式等待 顯式等待使webdriver等待某個條件成立時繼續執行,否則在達到最大時長時丟擲超時異常 timeoutexception webdriverwait類是由webd...
6 web自動化 元素等待
設定等待原因 1.網路速度 2.電腦配置 3.伺服器處理 需要匯入兩個包 匯入包 fromselenium.webdriver.support.waitimportwebdriverwait webdriverwait 匯入包 fromselenium.webdriver.supportimpote...
UI自動化測試3 元素定位
1.安裝 firebugs 和 firepath 我的建議是大家定位元素的時候,最好借助於firefox瀏覽器,個人覺得方便好用。下面我大概介紹下怎麼安裝firebugs和firepath firefox 附加元件 直接搜firebugs 和 firepath 裝好以後重啟瀏覽器就好了。2.頁面元素...