selenium python 一點用法的總結

2021-08-14 07:18:16 字數 1910 閱讀 2921

對ui自動化測試有一點「個人成見」,其實就是和現在工作的情況不相匹配,不適用,因為它需要的條件比較嚴苛,也就導致了它的使用範圍窄,因此此前對selenium模組的**都是淺嚐即止,但是這麼強大的東西,不僅可以適用於自動化測試的。(最近發現這個東西燒cpu,電腦開3個,跑了十個小時,cpu直接躺了)

對於爬蟲來說,不論是post介面,還是get html,一旦對方做了防爬的措施,都會遭到對方的陷阱,但是對於瀏覽器端都是使用者友好的,通過強大的selenium,對於一些場景,可以做最輕鬆的爬蟲,缺點就是效率有點慢。

做了幾個selenium的爬蟲程式後,想記錄一些小tips,這樣可以寫一些更加pythonic的**,並且對自動化ui也是很有幫助的。

一、解耦

由於比起post或者urlopen,selenium和『獵物』之間多隔了一層ui,那麼它的風險就更大,出錯就更容易。所以一定要解耦,主函式,登陸,頁面,單個操作盡量都分開,做好解耦的工作,後期改動也方便。 **更加具有閱讀性。更重要的是在重試某個步驟的時候,你更加應對自如。

二、錯誤捕獲處理

上面說了,selenium的出錯概率很高,不僅是頁面經常被攻城獅改,這還和你的本地的網路,記憶體,cpu息息相關,如果你的瀏覽器什麼都載入不出來,不要怕,做下,常規操作。 在與ui鬥智鬥勇的時候,最大的本領就是做各種異常處理。from selenium.common.exceptions import  匯入各種異常包,常見的有:

nosuchelementexception,noalertpresentexception,nosuchframeexception,invalidselectorexception,indexerror

捕獲之後選擇重試某個步驟,或者break,continue

三、等待

無法找到html節點為依據的情況下,我們會使用time.sleep,但是能找到依據的情況下,一定要使用selenium.webdriver.support.wait和selenium.webdriver.support提供給我們的webdriverwait和expected_conditions,避免無謂的等待,提供程式效率,示例:

webdriverwait(webdriver.chrome(),20).until(expected_conditions.visibility_of_element_located((by.xpath,"//*[@id='searchresult']/div/div[1]/label")))

四、重試

錯誤捕獲後我們會有重試,這個可以在函式塊中處理,也可以在設計中體現,比如使用佇列,生產消費非同步處理,多執行緒避免多程序更耗cpu的問題。

from threading import thread

import time

import random

from queue import queue

from collections import deque

queue = queue(5)

class

pro_thread(thread):

def

run(self):

tasks = deque([1, 2

, 3])

global queue

while true

:task = tasks.pop()

queue.put(task)

print("生產"

, task)

time.sleep(random.random())

class

con_thread(thread):

def

run(self):

global queue

while true

:task = queue.get()

queue.task_done()

print("消費"

, task)

selenium python環境搭建

安裝python 2.7.版本,其他版本目前支援不好 嘗試cmd下輸入python,若無法呼叫python,需要將python的安裝路徑 python.exe的儲存位置 新增到path系統變數中 3 安裝pycharm整合開發環境 晚上比較多資料,需要破解。4 配置pycharm 開啟pycharm...

selenium python 安裝使用

selenium官網 selenium簡單教程 selenium完整教程 python基礎教程 注意 上去中如果沒有勾選add python to 安執行命令列,會報 pip 不是內部或外部命令 需要手動進行環境配置即可 執行命令視窗 cmd 輸入以下命令安裝selenium pip install...

selenium python環境搭建

一 初始準備 準備工具如下 因為版本都在更新的,python選擇2.7.xx,setuptoosl選擇平台對應的版本。二 安裝 1.安裝python,安裝目錄c python27 2.setuptools 的安裝也非常簡單,同樣是exe檔案,缺省會找到python的安裝路徑,將安裝到c python...