本文主要講WebDriver編寫的腳本實例在不同瀏覽器上執行,在Selenium WebDriver官方支持的瀏覽器中,這裡只針對IE、Chrome和Firefox這三個瀏覽器進行講解,其他瀏覽器(比如:Opera、Safari)原理都一樣,請讀者自行練習。
環境準備:
(1)在使用IE瀏覽器進行WebDriver自動化測試之前,需要從http://docs.seleniumhq.org/download/網站上下載一個WebDriver連接IE瀏覽器的驅動程序,文件名為IEDriverServer.exe。下載頁面的下載連結如圖9-1所示。(2)解壓下載後的壓縮文件,並將其裡面的IEDriverServer.exe文件保存本地磁碟的任意位置,比如C:\下。
#encoding=utf-8
from selenium import webdriver
import unittest
class VisitSogouByIE(unittest.TestCase):
def setUp(self):
# 啟動IE瀏覽器
self.driver = webdriver.Ie(executable_path = "c:\\IEDriverServer")
def test_visitSogou(self):
# 訪問搜索首頁
self.driver.get("http://www.sogou.com")
# 列印當前網頁的網址
print self.driver.current_url
def tearDown(self):
# 退出IE瀏覽器
self.driver.quit()
if __name__ == '__main__':
unittest.main()
https://www.sogou.com/
Ran 1 test in 18.027s
OK
代碼解釋:
(1)在setUp()函數中通過webdriver.Ie()方法獲取IE瀏覽器的對話實例,函數所傳的參數executable_path = "c:\\IEDriverServer"指明了WebDriver連接IE瀏覽器所用驅動程序的存放路徑。(2)在測試方法test_visitSogou()中實現的是訪問搜狗首頁,並列印當前網頁訪問的網址。(3)在tearDown()方法中,實現關閉瀏覽器實例等後期的清理工作。環境準備:
(2)如果用的Selenium3.x的版本,需要下載WebDriver連接Firefox瀏覽器的驅動程序文件,詳細操作步驟見第6章的6.2小節。但如果用的是Selenium2.x版本,則不需要準備驅動程序。#encoding=utf-8
from selenium import webdriver
import unittest
class VisitSogouByFirefox(unittest.TestCase):
def setUp(self):
# 啟動Firefox瀏覽器
self.driver = webdriver.Firefox(executable_path = "c:\\geckodriver")
def test_visitSogou(self):
# 訪問搜索首頁
self.driver.get("http://www.sogou.com")
# 列印當前網頁的網址
print self.driver.current_url
def tearDown(self):
# 退出Firefox瀏覽器
self.driver.quit()
if __name__ == '__main__':
unittest.main()
更多說明:
使用Firefox瀏覽器進行自動化測試時,都默認Firefox瀏覽器安裝在默認路徑下,後續章節也一樣,如果未安裝到默認路徑下,解決辦法詳見第6章的6.2小節。環境準備:
(1)使用WebDriver在Chrome瀏覽器上進行測試時,需要從http://chromedriver.storage.googleapis.com/index.html網站下載WebDriver操作Chrome瀏覽器的驅動程序,需要下載的程序文件名為chromedriver.exe,筆者這裡選擇的是最新2.27版(注意,2.27版本的驅動要求Chrome瀏覽器版本必須是54.0.2840.0及其以上版本)。下載頁面如圖9-2所示,讀者可以根據自己的作業系統類型選擇相應的版本進行下載。(2)解壓下載後的文件,將chromedriver.exe程序文件保存在本地硬碟的任意位置,比如C:\下。
#encoding=utf-8
from selenium import webdriver
import unittest
class VisitSogouByChrome(unittest.TestCase):
def setUp(self):
# 啟動Chrome瀏覽器
self.driver = webdriver.Chrome(executable_path = "c:\\chromedriver")
def test_visitSogou(self):
# 訪問搜索首頁
self.driver.get("http://www.sogou.com")
# 列印當前網頁的網址
print self.driver.current_url
def tearDown(self):
# 退出Chrome瀏覽器
self.driver.quit()
if __name__ == '__main__':
unittest.main()
說明:
在實施自動化測試過程中,經常會遇到正確的程序執行報錯,而且有些錯報的還不清不楚。此時我們應該首先根據錯誤信息檢查測試代碼,如果在確定代碼沒有問題的情況下,考慮更換瀏覽器版本、驅動版本等方法來解決,因為Selenium3.x版本開始,瀏覽器驅動均由各瀏覽器官方提供支持,並且瀏覽器的更新速度遠超驅動更新速度,由此出現驅動不兼容最新版瀏覽器的情況也很正常,根據筆者的經驗,一般通過降低瀏覽器版本或者更新驅動,再或者更換瀏覽器等都能解決。《Selenium WebDriver 3.0 自動化測試框架實戰指南 》
ISBN:978-7-302-48317-5
吳曉華 王晨昕 編著
定價:69元