原文:
1.有frame
2.沒有加等待時間
為什麼要加等待時間了,是因為**執行速度與瀏覽器載入速度不一樣,導致**執行完了瀏覽器還沒有載入完,出現異常情況。
下面講解selenium的三種等待方式:
1.強制等待,是最簡單粗暴的方法slepp(xx),不管你瀏覽器是否載入完了,程式都得等待xx秒,xx秒一到,繼續執行下面的**,一般作為除錯的時候使用
# -*- coding: utf-8 -*-
from selenium import webdriver
from time import sleep
driver = webdriver.firefox()
driver.get('')
sleep(3) # 強制等待3秒再執行下一步
print driver.current_url
driver.quit()
2.**等待,是設定了乙個最長等待時間,如果在規定時間內整個網頁載入完成,則執行下一步,否則一直等到時間截止,然後執行下一步
# -*- coding: utf-8 -*-
from selenium import webdriver
driver = webdriver.firefox()
driver.implicitly_wait(30) # 隱性等待,最長等30秒
driver.get('')
print driver.current_url
driver.quit()
3.顯示等待,程式每隔xx秒看一眼,如果條件成立了,則執行下一步,否則繼續等待,直到超過設定的最長時間,然後丟擲timeoutexception。
# -*- 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) # 隱性等待和顯性等待可以同時用,但要注意:等待的最長時間取兩者之中的大者
driver.get('')
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()
注意的是:最長的等待時間取決於兩者之間的大者,此例中為20,如果隱性等待時間 > 顯性等待時間,則該句**的最長等待時間等於隱性等待時間。
webdriverwait(driver, 超時時長, 呼叫頻率, 忽略異常).until(可執行方法, 超時時返回的資訊)
Python selenium 三種等待方式
1.強制等待 time.sleep 2.顯式等待 from selenium.webdriver.support import expected conditions as ec from selenium.webdriver.support.ui import webdriverwait from...
Python selenium 三種等待元素方式
這種叫強制等待,不管你瀏覽器是否載入完了,程式都得等待,時間讀完繼續執行下面的 太死板,嚴重影響程式執行速度。from selenium import webdriver from time import sleep driver webdriver.firefox driver.get sleep...
Python selenium 三種等待方式詳解
1.強制等待 第一種也是最簡單粗暴的一種辦法就是強制等待sleep xx 強制讓閃電俠等xx時間,不管凹凸曼能不能跟上速度,還是已經提前到了,都必須等xx時間。看 coding utf 8 from selenium import webdriver from time import sleep d...