selenium自動化測試(七) 元素等待

2021-10-05 08:34:22 字數 2026 閱讀 9914

當瀏覽器在載入頁面時,頁面上的元素並不是同時被載入完的,就給定位增加了困難。webdriver提供了兩種型別的等待:顯式等待和隱式等待

顯式等待使webdriver等待某個條件成立時繼續執行,否則在達到最大時長時丟擲超時異常(timeoutexception)。

webdriverwait類是由webdriver提供的等待方法,在設定的時間內,預設每隔一段時間檢測一次當前頁面元素是否存在,如果超過設定時間沒檢測到則丟擲異常:

weddriverwait(driver, timeout, poll_frequency=0.5, ignored_exceptions=none)

from selenium import webdriver

from selenium.webdriver.support.wait import webdriverwait

from selenium.webdriver.support import expected_conditions as ec

driver = webdriver.chrome(

)driver.get(

'')# 每0.5秒判斷一次元素是否存在,如果存在就返回這個元素位置。如果超時(5s),則丟擲異常

element = webdriverwait(driver,5,

0.5)

.until(ec.presence_of_element_located(

('xpath'

,'//*[@id="kw"]'))

)element.send_keys(

'selenium'

)driver.find_element_by_id(

'su'

).click(

)driver.quit(

)

expected_conditions as ec是將expected_conditions重新命名為ec,並呼叫presence_of_element_located()方法判斷元素是否存在

隱式等待是通過一定的時長等待頁面上某元素載入完成。如果超出了設定的時長元素還沒有被載入,則丟擲nosuchelementexceptioin異常。

webdriver提供了implicitly_wait()方法來實現隱式等待。

from selenium import webdriver

driver = webdriver.chrome(

)driver.implicitly_wait(10)

driver.get(

'')driver.find_element_by_id(

'kw'

).send_keys(

'selenium'

)

implicitly_wait()預設引數的單位為秒,本例中設定的是10秒,它並不影響指令碼的執行速度,而且它並不針對頁面上某乙個元素進行等待。當指令碼執行到某個元素定位時,如果元素可以定位,則繼續執行,如果元素等位不到,則它將以輪詢的方式不斷地判斷元素是否被定位到。

假設在第6秒定位到了元素則繼續執行,若直到超出設定時長10秒還沒有定位到元素,則丟擲異常。

有時候我們希望指令碼執行到某一位置時做固定時間的休眠,尤其是在指令碼除錯過程中。這是可以使用sleep()方法,是由python的time模組提供的。

from selenium import webdriver

from time import sleep

driver = webdriver.chrome(

)driver.get(

'')sleep(2)

driver.find_element_by_id(

'kw'

).send_keys(

'selenium'

)driver.find_element_by_id(

'su'

).click(

)sleep(2)

driver.quit(

)

selenium 自動化測試。

第一步安裝 谷歌瀏覽器。第三步編寫測試測試指令碼 第四步 安裝selemium coding utf 8 引入webdriver和unittest所需要的包 from selenium import webdriver from selenium.webdriver.common.by import...

Python自動化測試 Selenium

第乙個selenium就。先show from selenium import webdriver driver webdriver.firefox driver.get assert oxcoder decode utf 8 in driver.title print driver.title d...

自動化測試selenium(四)

三 用例的執行順序 四 unittest斷言 unittest 各元件的關係為 test fixture 初始化和清理測試環境,比如建立臨時的資料庫,檔案和目錄等,其中 setup 和 setdown 是最常用的方法 test case 單元測試用例,testcase 是編寫單元測試用例最常用的類 ...