1、強(qiáng)制等待
看代碼:
# -*- coding: utf-8 -*-
from selenium import webdriver
from time import sleep
driver = webdriver.Firefox()
driver.get('https://huilansame.github.io')
sleep(3) # 強(qiáng)制等待3秒再執(zhí)行下一步
print driver.current_url
driver.quit()
不管你瀏覽器是否加載完了,程序都得等待3秒讯检,3秒一到,繼續(xù)執(zhí)行下面的代碼
2卫旱、隱性等待
看代碼:
# -*- coding: utf-8 -*-
from selenium import webdriver
driver = webdriver.Firefox()
driver.implicitly_wait(30) # 隱性等待人灼,最長(zhǎng)等30秒
driver.get('https://huilansame.github.io')
print driver.current_url
driver.quit()
隱形等待是設(shè)置了一個(gè)最長(zhǎng)等待時(shí)間,如果在規(guī)定時(shí)間內(nèi)網(wǎng)頁(yè)加載完成誊涯,則執(zhí)行下一步挡毅,否則一直等到時(shí)間截止。
3 暴构、顯性等待
看代碼:
# -*- coding: utf-8 -*-
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
driver = webdriver.Firefox()
driver.implicitly_wait(10) # 隱性等待和顯性等待可以同時(shí)用跪呈,但要注意:等待的最長(zhǎng)時(shí)間取兩者之中的大者
driver.get('https://huilansame.github.io')
locator = (By.LINK_TEXT, 'CSDN')
try:
WebDriverWait(driver, 20, 0.5).until(EC.presence_of_element_located(locator))
print driver.find_element_by_link_text('CSDN').get_attribute('href')
finally:
driver.close()
- 程序每隔xx秒看一眼,如果條件成立了取逾,則執(zhí)行下一步耗绿,否則繼續(xù)等待,直到超過設(shè)置的最長(zhǎng)時(shí)間砾隅,然后拋出TimeoutException误阻。
- 最長(zhǎng)的等待時(shí)間取決于兩者之間的大者,此例中為20晴埂,如果隱性等待時(shí)間 > 顯性等待時(shí)間究反,則該句代碼的最長(zhǎng)等待時(shí)間等于隱性等待時(shí)間。