新聞中心
作為小編講述不少的內(nèi)容,大家應(yīng)該了解這個(gè)工具的重要意義了吧,之前也跟大家提及關(guān)于這個(gè)工具的安裝內(nèi)容,今日再給大家詳細(xì)說(shuō)下怎么去使用,利用最簡(jiǎn)單,最快捷的方式去使用,想必大家都迫不及待想要了解了吧~那就一起來(lái)看下吧~

selenium三種等待方式
有時(shí)候?yàn)榱吮WC腳本運(yùn)行的穩(wěn)定性,需要腳本中添加等待時(shí)間。
強(qiáng)制等待
第一種也是最簡(jiǎn)單粗暴的一種辦法就是強(qiáng)制等待sleep(xx),需要引入“time”模塊,這種叫強(qiáng)制等待,不管你瀏覽器是否加載完了,程序都得等待3秒,3秒一到,繼續(xù)執(zhí)行下面的代碼,作為調(diào)試很有用,有時(shí)候也可以在代碼里這樣等待,不過(guò)不建議總用這種等待方式,太死板,嚴(yán)重影響程序執(zhí)行速度。
# -*- coding: utf-8 -*-
from selenium import webdriver
import time
driver = webdriver.Firefox()
driver.get('http://baidu.com')
time.sleep(3) # 強(qiáng)制等待3秒再執(zhí)行下一步
print(driver.current_url)
driver.quit()
隱性等待
第二種辦法叫隱性等待,通過(guò)添加 implicitly_wait() 方法就可以方便的實(shí)現(xiàn)智能等待;implicitly_wait(30) 的用法應(yīng)該比 time.sleep() 更智能,后者只能選擇一個(gè)固定的時(shí)間的等待,前者可以 在一個(gè)時(shí)間范圍內(nèi)智能的等待。
# -*- coding: utf-8 -*-
from selenium import webdriver
driver = webdriver.Firefox()
driver.implicitly_wait(30) # 隱性等待,最長(zhǎng)等30秒
driver.get('http://baidu.com')
print(driver.current_url)
driver.quit()
顯性等待
Init
l driver: 傳入WebDriver實(shí)例,即我們上例中的driver
l timeout: 超時(shí)時(shí)間,等待的最長(zhǎng)時(shí)間(同時(shí)要考慮隱性等待時(shí)間)
l poll_frequency: 調(diào)用until或until_not中的方法的間隔時(shí)間,默認(rèn)是0.5秒
l ignored_exceptions: 忽略的異常,如果在調(diào)用until或until_not的過(guò)程中拋出這個(gè)元組中的異常,則不中斷代碼,繼續(xù)等待,如果拋出的是這個(gè)元組外的異常,則中斷代碼,拋出異常。默認(rèn)只有NoSuchElementException。
Until
method: 在等待期間,每隔一段時(shí)間(__init__中的poll_frequency)調(diào)用這個(gè)傳入的方法,直到返回值不是False
message: 如果超時(shí),拋出TimeoutException,將message傳入異常
until_not
與until相反,until是當(dāng)某元素出現(xiàn)或什么條件成立則繼續(xù)執(zhí)行,
until_not是當(dāng)某元素消失或什么條件不成立則繼續(xù)執(zhí)行,參數(shù)也相同,不再贅述。
在這里,你可以用selenium提供的 expected_conditions 模塊中的各種條件,也可以用WebElement的 is_displayed() 、is_enabled()、**is_selected() **方法,或者用自己封裝的方法都可以。
更多學(xué)習(xí)內(nèi)容,點(diǎn)擊查詢python學(xué)習(xí)網(wǎng)。
文章名稱:創(chuàng)新互聯(lián)Python教程:python自動(dòng)化框架selenium怎么用?
分享路徑:http://m.fisionsoft.com.cn/article/dhopiji.html


咨詢
建站咨詢
