1. 程式人生 > >《手把手教你》系列基礎篇之2-python+ selenium-開啟和關閉瀏覽器(詳細)

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

1. 簡介

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

你的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://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://sites.google.com/a/chromium.org/chromedriver/downloads

Mozilla GeckoDriver: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交流群:707699217
Project: python+ selenium-開啟和關閉瀏覽器
'''

# 3.匯入模組
from selenium import webdriver
Ch_driver = webdriver.Chrome()
Ch_driver.get("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交流群:707699217
Project: python+ selenium-開啟和關閉瀏覽器
'''

# 3.匯入模組
from selenium import webdriver
Fi_driver = webdriver.Firefox()
Fi_driver.get("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交流群:707699217
Project: python+ selenium-開啟和關閉瀏覽器
'''

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

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

4.5總結

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

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

# coding=utf-8

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

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

# 3.匯入模組

from selenium import webdriver # 匯入webdriver包

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

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

driver.get("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所在的資料夾路