最近也有很多人私下問我,selenium學(xué)習(xí)難嗎,基礎(chǔ)入門的學(xué)習(xí)內(nèi)容很多是3以前的版本資料,對于有基礎(chǔ)的人來說,3到4的差別雖然有,但是不足以影響自己,但是對于沒有學(xué)過的人來說,通過資料再到自己寫的代碼,發(fā)現(xiàn)有些東西沒有,有些方法又不相同,導(dǎo)致腳本不能運(yùn)行,提醒我,看是否能花點(diǎn)時間,把selenium的內(nèi)容好好梳理一下,從基礎(chǔ)開始,到能夠梳理出一個selenium的知識圖譜更好。
整個內(nèi)容可能不是一次能寫完的,所以我打算分多次來寫,如果各位看完后,有什么問題也可以發(fā)信息給我,我給大家解答一下,寫這個也是為了方便在未來selenium還會有新的版本更新,以后也方便做個對比。
1. selenium的作用
2. selenium版本的介紹
3. selenium工作原理
4. selenium安裝
5. 瀏覽器基本操作
1、selenium的介紹
Selenium是Thought Works公司開發(fā)的一套基于web應(yīng)用的自動化測試工具,直接運(yùn)行在瀏覽器中,模擬用戶操作。它可以被用于單元測試、集成測試、回歸測試、系統(tǒng)測試、冒煙測試、驗(yàn)收測試,并且可以運(yùn)行在各種瀏覽器和操作系統(tǒng)上。
目前使用selenium的人群大概有兩大類吧,一類是軟件測試工程師,他們可以通過selenium來實(shí)現(xiàn)自動化的測試,以提高回歸測試的效率,降低人員的執(zhí)行成本。第二類可能就是很多寫爬蟲的人,因?yàn)楝F(xiàn)在網(wǎng)頁端爬取數(shù)據(jù)的人有很多,服務(wù)端做了很多的反爬策略,及各種限制如動態(tài)加載等,單獨(dú)的通過接口來爬取數(shù)據(jù)的難度和可行性有所降低,而selenium可以模擬人為的在頁面上執(zhí)行各種操作,那么各種反爬的手段可能對它來講也就沒有什么意義了,當(dāng)然也有人說,還有各種驗(yàn)證碼也會有影響,驗(yàn)證碼的問題我們今天先不談,后面我看是否可以單獨(dú)出一篇對驗(yàn)證碼處理的文章。
2、selenium的版本介紹
selenium從發(fā)布到至今經(jīng)歷了1、2、3、4個版本,截止目前發(fā)布的最新版本是4.7版本,版本跨度最大的其實(shí)是1.0版本到2.0版本,1.0版本中包含了ide、Grid、core和rc四大部分,2.0在1.0基礎(chǔ)上加入了webdriver,webdriver提供了更為簡單的編程接口,彌補(bǔ)了1.0中Selenium-RC的一些不足和限制,對外提供了更簡潔的restfull的API接口。
selenium1.0的主要內(nèi)容:
- DE:可以通過IDE完成測試過程的錄制和回放。主要用來給初學(xué)者了解selenium,但不適合直接作為日常自動化的測試。
- Grid:是selenium部署、測試及執(zhí)行(分布式測試用例執(zhí)行)。
- RC:selenium Remote Control,一個代理與控制器。
- Core:selenium的測試機(jī)制核心部分,包含測試用例集的執(zhí)行,斷言,由js代碼組成,支持夸平臺運(yùn)行。
selenium2.0 = selenium1.0 + webdriver
3. selenium工作原理
3.1、客戶端(selenium支持多種編程語言,所以客戶端的請求可以使用各種語言來調(diào)用接口),selenium 通過調(diào)用WeDriver類的start方法去啟動瀏覽器驅(qū)動,創(chuàng)建服務(wù)的啟動。
3.2、通過服務(wù)端返回的session id,在下一次請求時,攜帶這個id,將客戶端要執(zhí)行的操作發(fā)送給服務(wù)端,服務(wù)端解析用戶發(fā)送請求中的操作,并將操作指令發(fā)送給瀏覽器去執(zhí)行。
3.3、瀏覽器執(zhí)行客戶端操作,并將操作的結(jié)果返回給服務(wù)端,服務(wù)端將執(zhí)行結(jié)果進(jìn)行封裝,并返回給客戶端。
客戶端在啟動服務(wù)端時,服務(wù)端會啟動一個9515的端口用來與客戶端連接,客戶端調(diào)用selenium提供的方法,在由selenium將請求轉(zhuǎn)化為對應(yīng)的操作接口指令,根據(jù)操作指令調(diào)用對應(yīng)的API接口,通過API接口調(diào)用將用戶操作發(fā)送給瀏覽器端去執(zhí)行。
這部分的內(nèi)容需要在后續(xù)的過程中,解析代碼來理解他的原理和過程。
4. selenium安裝
安裝selenium環(huán)境,這里以python 3.8的為例,安裝完成python后,并且配置好python相關(guān)的環(huán)境變量,不懂的可以私信我。
需要安裝的有:
1、selenium
2、瀏覽器驅(qū)動
3、瀏覽器
4.1 安裝selenium
如果python環(huán)境已經(jīng)安裝完成,可以使用pip來安裝selenium,在開始菜單中,輸入cmd,打開dos窗口,執(zhí)行下列命令
點(diǎn)擊查看代碼# 這里我選擇安裝的是selenium的4.0版本,有部分3.0的內(nèi)容,在4.0中沒有徹底刪除,還可以使用,如果使用高版本,那變更的內(nèi)容將不能再使用了
pip install selenium==4.0
# 或
pip3 install selenium==4.0
# 如果安裝過程比較慢或者出現(xiàn)超時錯誤,則可以使用,我這里使用的是國內(nèi)的清華源安裝的,相對穩(wěn)定點(diǎn)
pip3 install selenium==4.0.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
4.2 安裝瀏覽器驅(qū)動
安裝瀏覽器驅(qū)動,需要根據(jù)瀏覽器來決定,使用不同的瀏覽器,就需要選擇不同的瀏覽器驅(qū)動,瀏覽器驅(qū)動也需要根據(jù)瀏覽器的版本來考慮,所以瀏覽器、瀏覽器版本要與瀏覽器驅(qū)動及驅(qū)動版本向?qū)?yīng),下面列出幾種常見瀏覽器的驅(qū)動下載地址
1、Chrome(Google)瀏覽器:http://chromedriver.storage.googleapis.com/index.html
先確定自己瀏覽器的版本,在chrome瀏覽器中的幫助中,查看關(guān)于,上面會顯示瀏覽器版本,或者直接在瀏覽器url地址上輸入chrome://settings/help,下面這個是我瀏覽器的版本
根據(jù)版本號,在驅(qū)動下載頁面中,找到對應(yīng)的版本
因?yàn)槲沂莣indow的系統(tǒng),所以我選擇chromedriver_win32.zip,下載后,將里面的chromedriver.exe文件解壓出來,其實(shí)放在哪無所謂,放的地方不同后面寫代碼時的處理會有所區(qū)別。一般建議放在path這個環(huán)境變量能訪問到的位置,或者干脆放在python的安裝目錄下也行
2、Firefox(火狐)瀏覽器:https://github.com/mozilla/geckodriver/releases
采用同樣的方式下載對應(yīng)版本的geckodriver驅(qū)動,F(xiàn)irefox的版本和geckodriver的版本對應(yīng)關(guān)系如下,也可以直接去官網(wǎng)查看,
官網(wǎng)地址:https://firefox-source-docs.mozilla.org/testing/geckodriver/Support.html
3、Edge :https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/
首先也是要確定Edge的版本,然后根據(jù)版本到官網(wǎng)下載驅(qū)動
4.3 安裝瀏覽器
這部分內(nèi)容就不再贅述,給為可以直接到官網(wǎng)下載安裝即可,這里給新手們提醒下,安裝過程中,最好不要修改安裝的路徑。
4.4 驗(yàn)證安裝結(jié)果
打開pycharm,編寫如下代碼,如果可以打開對應(yīng)的瀏覽器,并且跳轉(zhuǎn)到百度頁面,則說明安裝成功。這里以Chrome瀏覽器為例
點(diǎn)擊查看代碼# 導(dǎo)入webdriver庫
from selenium import webdriver
# 啟動chrome瀏覽器
driver = webdriver.Chrome()
# 打開百度頁面
driver.get('https://www.baidu.com')
5. 瀏覽器基本操作
上面的代碼中,已經(jīng)說明了如何打開瀏覽器,并且跳轉(zhuǎn)到指定的URL地址。下面說明下對瀏覽器的基本操作方法
點(diǎn)擊查看代碼#coding=utf-8
__author__ = 'Meteor'
from selenium import webdriver
from time import sleep
#打開一個Firefox瀏覽器
driver = webdriver.Chrome()
driver.get('https://www.baidu.com')
#等2秒
sleep(2)
#刷新
driver.refresh()
#等2秒
sleep(2)
#后退
driver.back()
#等2秒
sleep(2)
#前進(jìn)
driver.forward()
#等2秒
sleep(2)
#最小化
driver.minimize_window()
#等2秒
sleep(2)
#最大化
driver.maximize_window()
#等2秒
sleep(2)
#關(guān)閉瀏覽器
driver.close()
除了上面的基本操作外,也可以通過Option類來配置瀏覽器的啟動文章來源:http://www.zghlxwxcb.cn/news/detail-813264.html
點(diǎn)擊查看代碼# 導(dǎo)入Option類
from selenium.webdriver.chrome.options import Options
# 實(shí)例化一個Option類的對象
options = Options()
# 通過Options對象的add_argument方法添加啟動的配置
options.add_argument('--window-size=1366,768') #--window-size=1366,768 表示設(shè)置瀏覽器的大小
# 啟動瀏覽器,并將啟動參數(shù)帶入到瀏覽器中
driver = webdriver.Chrome(options=options)
Opetion類中的配置方式除了–window-size設(shè)置瀏覽器大小外,還有下面幾種方式文章來源地址http://www.zghlxwxcb.cn/news/detail-813264.html
點(diǎn)擊查看代碼--user-agent="" 設(shè)置請求頭的User-Agent
--window-size=1366,768 設(shè)置瀏覽器分辨率(窗口大?。?--headless 無界面運(yùn)行(無窗口)
--start-maximized 最大化運(yùn)行(全屏窗口)
--incognito 隱身模式(無痕模式)
--disable-javascript 禁用javascript
--disable-infobars 禁用瀏覽器正在被自動化程序控制的提示
這篇就先寫到這里,后面會持續(xù)更新。。。。到了這里,關(guān)于selenium4 自動化測試--環(huán)境安裝和基礎(chǔ)操作的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!