前提:
我們在做web自動化時,有的時候要等待元素載入出來,才能操作,不然會報錯
1.強制等待
2.隱式等待
3.顯示等待
內容:一,強制等待
這個比較簡單,就是利用time模組的sleep的方法來實現
例子:
1#coding = utf-8
2from time import
sleep
3from selenium import
webdriver4#
啟動瀏覽器
5 driver =webdriver.chrome()6#
7 driver.get(r'
')8#
等待3秒
9 sleep(3)
10 driver.find_element_by_css_selector("
#kw").send_keys("
selenium")
11#退出12 driver.quit()
這個就是強制等待3秒,不管你怎麼樣,就是給我停3秒,強制性的
二,隱式等待
隱式等待就是瀏覽器會在內部執行等待,但是我們可能看不出來他等待了
例子:
#coding = utf-8
from selenium import
webdriver
#啟動瀏覽器
driver =webdriver.chrome()
#driver.get(r'
')driver.find_element_by_css_selector(
"#kw
").send_keys("
selenium")
driver.find_element_by_css_selector(
"#su
").click()
#隱式等待30秒
driver.implicitly_wait(30)
result = driver.find_elements_by_css_selector("
h3.t>a")
for i in
result:
(i.text)#退出
driver.quit()
三,顯示等待
因為隱式等待有缺陷,比如你想要元素載入出來就執行下面的事情,怎麼辦,這個要用顯示等待了
顯示等待要用到webdriverwait,配合該類的until()和until_not()方法,就能夠根據判斷條件而進行靈活地等待了。它主要的意思就是:程式每隔xx檢查一次,如果條件成立了,則執行下一步,否則繼續等待,直到超過設定的最長時間,然後丟擲timeoutexception
例子:
#coding = utf-8
from selenium import
webdriver
from selenium.webdriver.support.wait import
webdriverwait
#啟動瀏覽器
driver =webdriver.chrome()
#driver.get(r'
')driver.find_element_by_css_selector(
"#kw
").send_keys("
selenium")
driver.find_element_by_css_selector(
"#su
").click()
#超時時間為30秒,每0.2秒檢查1次,直到class="tt"的元素出現
text = webdriverwait(driver,30,0.2).until(lambda x:x.find_element_by_css_selector("
.tt"
)).text
(text)#退出
driver.quit()
Python爬蟲利器之selenium有無介面
selenium通過模擬瀏覽器完成一些操作,但是在一些伺服器上是沒有圖形介面的,自然使用selenium操作需要在無介面操作。from selenium import webdriver driver webdriver.chrome driver.get driver.quit python3 f...
python自動化之selenium
一 環境 1 selenium 安裝 pip install selenium 版本號 後可省略,預設安裝最新版本 檢視 pip show selenium 解除安裝 pip uninstall selenium 2 瀏覽器驅動 以chrome為例 國內可訪問 windows 解壓後將驅動移動至ch...
Selenium之python(一) 準備篇
1 安裝ptyhon3 2 安裝jetbrains pycharm 2018.1.1 x64,也就是python編輯器ide 進入file setting project 專案名 project interpreter 右邊的加號 輸入selenium找到這個包 左下角install package...