1. 介紹
1.1 介紹
Python的selenium庫是可以實現用代碼模擬用戶上網行為的功能,所以Python的selenium庫的使用技巧成為了大部分測試工程師的必備技能。Python的selenium通過chromedriver驅動可以使用Python代碼啟動瀏覽器、打開網頁、讀取網頁數據、提交用戶表單、登錄網址平台等等用戶日常的上網行為,這就可以讓我們使用Python代碼去模擬用戶去操作網站功能、去使用平台功能。
使用Python的selenium庫可以幫助測試工程師去自動化測試研發開放的功能是否正常,可以幫助數據分析工程師自動化採集網站數據,可以幫助想要做搜索引擎平台的站長輕鬆實現網頁蜘蛛的功能。
今天福哥就要在我們的TFWindows上搭建這個Selenium環境,沒有弄過的童鞋可以圍觀了。
2. 安裝
2.1 安裝selenium庫
通過pip工具安裝selenium庫。
pip install selenium

2.2 安裝Chrome瀏覽器
這個就不教了,福哥給出Chrome官網下載地址,別去第三方的網站下載就可以了!
默認從官網下載的是Chrome安裝器,安裝過程中需要聯網。

2.3 安裝chromedriver驅動
從官網選擇最新版本下載下來,版本一定要和我們按照的Chrome瀏覽器的版本一致
2.3.1 Chrome版本號
打開Chrome瀏覽器,點地址欄右邊的三個點,選擇「幫助」>「關於 Google Chrome」,找到下圖中的版本號。

2.3.2 下載chromedriver驅動
打開驅動下載頁面,找到匹配的版本的驅動。
我們只需要保證版本號前面的3段匹配即可,最後一段不用管他,也就是說「91.0.4472」匹配即可。會有很多匹配的項目,因為是Windows平台,所以我們只需要找到win32版本就可以了。如果有多個win32版本,找出版本號最後一段最大的那個即可。
http://chromedriver.storage.googleapis.com/

把<Key>…</Key>裏面的資源URI複製導驅動網址後面就可以下載了。
http://chromedriver.storage.googleapis.com/91.0.4472.101/chromedriver_win32.zip
2.3.3 安裝chromedriver驅動
解壓縮下載下來的壓縮包,將裏面的chromedriver.exe放到Python的Scripts目錄下面。

2.4 隱藏控制台信息
默認情況下,我們使用selenium連接服務器會有一堆的控制台信息,非常不便於我們調試程序。

2.4.1 安裝pypiwin32
首先我們需要安裝pypiwin32庫。
pip install pypiwin32

2.4.2 修改service.py
接着我們要改造service.py腳本,下面是service.py腳本的路徑位置。
C:Python38Libsite-packagesseleniumwebdrivercommonservice.py
打開service.py腳本,首先導入CREATE_NO_WINDOW。
from win32process import CREATE_NO_WINDOW
接着找到「Starts the Service」關鍵字位置,修改subprocess.Popen調用,增加參數CREATE_NO_WINDOW。
self.process = subprocess.Popen(cmd, env=self.env,
close_fds=platform.system() != 'Windows',
stdout=self.log_file,
stderr=self.log_file,
stdin=PIPE,
creationflags=CREATE_NO_WINDOW)
配置完需要重新啟動編輯器IDLE,然後運行Python程序,這時候觀察控制台你會發現「這個世界清靜了~~」
3. 測試
現在編寫測試代碼來測試selenium庫是否正常。
3.1 測試
3.1.1 代碼
建立Selenium.py程序文件,寫入如下代碼。
#encoding=UTF-8
from selenium import webdriver
import time
import re
# init
opts = webdriver.ChromeOptions()
opts.add_argument("--disable-gpu")
opts.add_argument("--no-sandbox")
# set opts
chrome = webdriver.Chrome(options=opts)
# load baidu.com
chrome.get("http://www.baidu.com")
# find kw input and type 'site:tongfu.net' in it
input = chrome.find_element_by_id("kw")
input.send_keys("site:tongfu.net")
button = chrome.find_element_by_id("su")
button.click()
# wait
time.sleep(3)
# get page source
source = chrome.page_source
# test source
regexp = re.compile(r"首頁- 同福網 TONGFU.net", re.M)
mats = regexp.search(source)
if mats:
print (mats.group())
else:
print ("沒有找到")
# close
chrome.close()
3.1.2 啟動程序
運行Selenium.py程序。
首先python會自動啟動Chrome瀏覽器。
接着自動打開www.baidu.com首頁,自動輸入關鍵字「site:tongfu.net」,自動點擊搜索按鈕。
最後檢查頁面源代碼里是否包含「首頁- 同福網 TONGFU.net」。

4. 總結
使用Selenium可以實現模擬大部分用戶的上網行為,可以用來測試網站功能是否正常,包括用戶註冊、用戶登錄、發佈主題、回復主題、點贊等等非常具體的操作,Selenium是測試工程師的必修課。
原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/273779.html