🔥《手把手教你》系列基礎篇之 2-python+ selenium 自動化測試 - 開啟和關閉瀏覽器(詳細)

北京-宏哥發表於2024-11-19

1. 簡介

本節介紹如何初始化一個 webdriver 例項物件 driver,然後開啟和關閉 firefox 瀏覽器。要用 selenium 開啟 fiefox 瀏覽器。首先需要去下載一個 driver 外掛 geckodriver.exe, 下載地址https://image.baidu.com/search/down?url=https://github.com/mozilla/geckodriver/releasesexe 檔案後,把這個檔案放到,下載好這個

你的 python 安裝目錄下,例如:C:\Python27\geckdriver.exe。

作為剛初學者,這裡不建議使用 Python IDE 工具,選擇一個功能強大的記事本編輯工具就好,例如 Notepad++.等以後積累足夠了,需要編寫更多檔案,或者後期簡單框架設計,我們再來介紹和使用 Pycharm 這個 IDE 工具。

上一篇匆匆忙忙地將 selenium 安裝以後也沒有給小夥伴們介紹一下,今天就給不清楚的小夥伴和同學們普及一下 selenium。

2. Selenium 基本介紹

Selenium`是開源的自動化測試工具,它主要是用於 Web 應用程式的自動化測試,不只侷限於此,同時支援所有基於 web 的管理任務自動化。

2.1 Selenium 官網的介紹

Selenium is a suite of tools to automate web browsers across many platforms.

runs in many browsers and operating systems

can be controlled by many programming languages and testing frameworks.

Selenium 官網:http://seleniumhq.org/

Selenium Github 主頁:https://image.baidu.com/search/down?url=https://github.com/SeleniumHQ/selenium

Selenium 是用於測試 Web 應用程式使用者介面 (UI) 的常用框架。它是一款用於執行端到端功能測試的超強工具。您可以使用多個程式語言編寫測試,並且 Selenium 能夠在一個或多個瀏覽器中執行這些測試。

Selenium 經歷了三個版本:Selenium 1,Selenium 2 和 Selenium 3。Selenium 也不是簡單一個工具,而是由幾個工具組成,每個工具都有其特點和應用場景。

Selenium 誕生於 2004 年,當在 ThoughtWorks 工作的 Jason Huggins 在測試一個內部應用時。作為一個聰明的傢伙,他意識到相對於每次改動都需要手工進行測試,他的時間應該用得更有價值。他開發了一個可以驅動頁面進行互動的 Javascript 庫,能讓多瀏覽器

自動返回測試結果。那個庫最終變成了 Selenium 的核心,它是 Selenium RC(遠端控制)和 Selenium IDE 所有功能的基礎。Selenium RC 是開拓性的,因為沒有其他產品能讓你使用自己喜歡的語言來控制瀏覽器。這就是 Selenium 1。

然而,由於它使用了基於 Javascript 的自動化引擎,而瀏覽器對 Javascript 又有很多安全限制,有些事情就難以實現。更糟糕的是,網站應用正變得越來越強大,它們使用了新瀏覽器提供的各種特性,都使得這些限制讓人痛苦不堪。

在 2006 年,一名 Google 的工程師, Simon Stewart 開始基於這個專案進行開發,這個專案被命名為 WebDriver。此時,Google 早已是 Selenium 的重度使用者,但是測試工程師們不得不繞過它的限制進行工具。Simon 需要一款能透過瀏覽器和作業系統的本地方法

直接和瀏覽器進行通話的測試工具,來解決 Javascript 環境沙箱的問題。WebDriver 專案的目標就是要解決 Selenium 的痛點。

到了 2008 年,Selenium 和 WebDriver 兩個專案合併。Selenium 有著豐富的社群和商業支援,但 WebDriver 顯然代表著未來的趨勢。兩者的合併為所有使用者提供了一組通用功能,並且借鑑了一些測試自動化領域最閃光的思想。這就是 Selenium 2。

2016 年,Selenium 3 誕生。移除了不再使用的 Selenium 1 中的 Selenium RC,並且官方重寫了所有的瀏覽器驅動。

2.2 Selenium 工具集

2.2.1 Selenium IDE

Selenium IDE (整合開發環境) 是一個建立測試指令碼的原型工具。它是一個 Firefox 外掛,實現簡單的瀏覽器操作的錄製與回放功能,提供建立自動化測試的建議介面。Selenium IDE 有一個記錄功能,能記錄使用者的操作,並且能選擇多種語言把它們匯出到一個可重用

的指令碼中用於後續執行。

2.2.2 Selenium RC

Selenium RC 是 selenium 家族的核心工具,Selenium RC 支援多種不同的語言編寫自動化測試指令碼,透過 selenium RC 的伺服器作為代理伺服器去訪問應用從而達到測試的目的。

selenium RC 使用分 Client Libraries 和 Selenium Server。

Client Libraries 庫主要主要用於編寫測試指令碼,用來控制 selenium Server 的庫。

Selenium Server 負責控制瀏覽器行為,總的來說,Selenium Server 主要包括 3 個部分:Launcher、Http Proxy、Core。

2.2.3 Selenium Grid

Selenium Grid 使得 Selenium RC 解決方案能提升針對大型的測試套件或者哪些需要執行在多環境的測試套件的處理能力。Selenium Grid 能讓你並行的執行你的測試,也就是說,不同的測試可以同時跑在不同的遠端機器上。這樣做有兩個有事,首先,如果你有一個

大型的測試套件,或者一個跑的很慢的測試套件,你可以使用 Selenium Grid 將你的測試套件劃分成幾份同時在幾個不同的機器上執行,這樣能顯著的提升它的效能。同時,如果你必須在多環境中執行你的測試套件,你可以獲得多個遠端機器的支援,它們將同時執行

你的測試套件。在每種情況下,Selenium Grid 都能透過並行處理顯著地縮短你的測試套件的處理時間。

2.2.4 Selenium WebDriver

WebDriver 是 Selenium 2 主推的工具,事實上 WebDriver 是 Selenium RC 的替代品,因為 Selenium 需要保留向下相容性的原因,在 Selenium 2 中, Selenium RC 才沒有被徹底的拋棄,如果使用 Selenium 開發一個新的自動化測試專案,那麼我們強烈推薦使用

Selenium2 的 WebDriver 進行編碼。另外, 在 Selenium 3 中,Selenium RC 被移除了。

3.瀏覽器驅動 driver 安裝

3.1 瀏覽器驅動 driver 的下載

driver 的下載應該是比較坑的部分,一定需要注意瀏覽器版本。

selenium 官網進入下載介面,這個時候請往下拉,雖然第三方的瀏覽器都不是 selenium 官方開發的,但是你可以在 selenium 官網找到 selenium 支援的瀏覽器相對應的驅動 driver 下載連結,因為我在本地使用的瀏覽器版本都是比較新的,所以對應的 driver 版本也都下載最新版即可。

以下是三大常用瀏覽器的下載連結:

Google Chrome driver:https://image.baidu.com/search/down?url=https://sites.google.com/a/chromium.org/chromedriver/downloads

Mozilla GeckoDriver:https://image.baidu.com/search/down?url=https://github.com/mozilla/geckodriver/releases

Internet Explorer Driver:http://selenium-release.storage.googleapis.com/3.13/IEDriverServer_x64_3.13.0.zip

3.2 瀏覽器驅動 driver 的安裝

下載下來的 zip 檔案解壓至 python 安裝目錄中,可以放置在:C:\Users\Administrator\AppData\Local\Programs\Python\Python36 中,但是推薦放置在 scripts 目錄中:C:\Users\Administrator\AppData\Local\Programs\Python\Python36\Scripts

完成以上工作,我們就可以進行測試使用 selenium 驅動瀏覽器了

4.測試驅動瀏覽器

4.1CMD 中啟動 python 並從 selenium 引入 webdriver 包

from selenium import webdriver

4.2 驅動 chrome 瀏覽器

開啟 Chrome 瀏覽器,訪問谷歌網址,然後再關閉 Chrome 瀏覽器。

參考程式碼

# coding=utf-8

# 1.先設定編碼,utf-8可支援中英文,如上,一般放在第一行

# 2.註釋:包括記錄建立時間,建立人,專案名稱。
'''
Created on 2019-11-25
@author: 北京-宏哥   QQ交流群:705269076
Project: python+ selenium-開啟和關閉瀏覽器
'''

# 3.匯入模組
from selenium import webdriver
Ch_driver = webdriver.Chrome()
Ch_driver.get("https://image.baidu.com/search/down?url=https://www.google.com")
Ch_driver.quit() # 使用quit()關閉了chrome並結束了此次測試,如果是close()只是關閉chrome,後臺仍在進行。

4.3 驅動 Firefox 瀏覽器

開啟 Firefox 瀏覽器,訪問谷歌網址,然後再關閉 Firefox 瀏覽器。

參考程式碼

# coding=utf-8

# 1.先設定編碼,utf-8可支援中英文,如上,一般放在第一行

# 2.註釋:包括記錄建立時間,建立人,專案名稱。
'''
Created on 2019-11-25
@author: 北京-宏哥   QQ交流群:705269076
Project: python+ selenium-開啟和關閉瀏覽器
'''

# 3.匯入模組
from selenium import webdriver
Fi_driver = webdriver.Firefox()
Fi_driver.get("https://image.baidu.com/search/down?url=https://www.google.com")
Fi_driver.quit()

4.4 驅動 IE 瀏覽器

開啟 IE 瀏覽器,訪問谷歌網址,然後再關閉 IE 瀏覽器。

參考程式碼

# coding=utf-8

# 1.先設定編碼,utf-8可支援中英文,如上,一般放在第一行

# 2.註釋:包括記錄建立時間,建立人,專案名稱。
'''
Created on 2019-11-25
@author: 北京-宏哥   QQ交流群:705269076
Project: python+ selenium-開啟和關閉瀏覽器
'''

# 3.匯入模組
from selenium import webdriver
Ie_driver = webdriver.Ie()
Ie_driver.get("https://image.baidu.com/search/down?url=https://www.google.com")
Ie_driver.quit()

看起來都正常驅動瀏覽器並開啟了網頁,然後關閉退出瀏覽器。這樣我們就完成了 selenium 自動化測試的開啟和關閉瀏覽器的準備工作~

注意:可能出現的報錯

Exception: Message: Unexpected error launching Internet Explorer. Protected Mode settings are not the same for all zones. Enable Protected Mode must be set to the same value (enabled or disabled) for all zones.

解決辦法:Internet 選項->安全; 把 Internet 站點,本地 Intrant,受信任站點 三個地方的安全介面都設定相同等級,例如都設定中; 再次執行程式碼就可以用 IE 開啟百度了。

總結:目前,由於 IE 的不穩定性和速度問題,建議採用火狐或者谷歌瀏覽器來測試和 debug 自動化指令碼。

4.5 總結

以上程式碼可以寫在一個檔案然後執行這個檔案即可。細心的小夥伴或者是童鞋覺得剛開啟瀏覽器時視窗有點小的話,你可以透過程式碼最大化一下瀏覽器。

用 Notepad++ 開啟一個空白檔案,輸入如下程式碼,儲存為 first.py

# coding=utf-8

# 1.先設定編碼,utf-8可支援中英文,如上,一般放在第一行

# 2.註釋:包括記錄建立時間,建立人,專案名稱。
'''
Created on 2019-11-25
@author: 北京-宏哥   QQ交流群:705269076
Project: python+ selenium-開啟和關閉瀏覽器
'''

# 3.匯入模組

from selenium import webdriver # 匯入webdriver包

driver = webdriver.Firefox() # 初始化一個火狐瀏覽器例項:driver

driver.maximize_window() # 最大化瀏覽器

driver.get("https://image.baidu.com/search/down?url=https://www.baidu.com") # 透過get()方法,開啟一個url站點

driver.quit() #關閉並退出瀏覽器

開啟 cmd 視窗,cd 到 first.py 所在的路徑,在 cmd 中輸入命令: python first.py 回車,可以看看是否開啟火狐,開啟百度,關閉火狐的效果。

小結

透過上面程式碼,和本文,基本瞭解瞭如何開啟和關閉瀏覽器。如果想開啟 IE 或者 Chrome 瀏覽器,也需要下載對應瀏覽器的 driver.exe 檔案,放到 python 安裝目錄。

注意:可能會遇到一些報錯

  1. geckodriver.exe 沒有放到 python 安裝目錄下,這一類報錯。
  2. python first.py 執行後,找到檔案,說明沒有透過 cd 命令切換到 first.py 所在的資料夾路徑。

相關文章