當瀏覽器在載入頁面時,頁面上的元素並不是同時被載入完的,就給定位增加了困難。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()方法來實現隱式等待。
implicitly_wait()預設引數的單位為秒,本例中設定的是10秒,它並不影響指令碼的執行速度,而且它並不針對頁面上某乙個元素進行等待。當指令碼執行到某個元素定位時,如果元素可以定位,則繼續執行,如果元素等位不到,則它將以輪詢的方式不斷地判斷元素是否被定位到。from selenium import webdriver
driver = webdriver.chrome(
)driver.implicitly_wait(10)
driver.get(
'')driver.find_element_by_id(
'kw'
).send_keys(
'selenium'
)
假設在第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 是編寫單元測試用例最常用的類 ...