web自動化07 元素等待

2022-10-09 02:51:08 字數 1813 閱讀 6617

1、什麼是元素等待?

在定位頁面元素時如果沒找到,會在指定時間內一直等待的過程

2、為什麼需要元素等待

3、三種元素等待型別

強制等待

隱式等待

顯式等待

4、隱式等待

概念: 定位元素時,如果能定位到元素則直接返回該元素,不觸發等待; 

如果不能定位到該元素,則間隔一段時間後再去定位元素; 

如果在達到最大時長時還沒有找到指定元素(無法控制時間),則丟擲元素不存在的異常 nosuchelementexception 

實現方式:

方法:driver.implicitly_wait(timeout)

(timeout:為等待最大時長,單位:秒)

說明:隱式等待為全域性設定(只需要設定一次,就會作用於所有元素)

注意:1、隱式等待是全域性有效,只需要設定一次就行

2、當隱式等待被啟用時,雖然目標元素出現了,但是當前頁面的其他元素未載入完成,而繼續等待,增加**的執行時長

5、顯式等待

概念:定位指定元素時,如果能定位到元素則直接返回該元素,不觸發等待; 

如果不能定位到該元素,則間隔一段時間後再去定位元素;

如果在達到最大時長時還沒有找到指定元素,則拋出超 時異常 timeoutexception 。

1. 導包 等待類 --> from selenium.webdriver.support.wait import

webdriverwait

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")

)

例項**:

import

time

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.頁面元素...