WebDriver的多瀏覽器測試

2021-02-14 書圈

本文主要講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元

相關焦點

  • Selenium2/Webdriver啟動各種瀏覽器的方法
    本文主要記錄下在使用selenium2/webdriver時啟動各種瀏覽器的方法、以及如何加載插件、定製瀏覽器信息(設置profile)等
  • 【自動化測試】【Jest-Selenium】(04)—— Selenium WebDriver
    創建瀏覽器會話(Chrome) 3.2. 頁面導航控制(加載指定測試頁面) 3.3. 查找 DOM 元素 3.4. 獲取元素屬性 3.5. 模擬鍵盤動作 3.6. 模擬滑鼠動作 3.7. alert 窗口控制4. 效果展示1. Selenium WebDriver 是什麼?
  • 開源-selenium webdriver
    驅動程序:負責控制實際的瀏覽器。大多數驅動程序是由瀏覽器廠商自己創建的。驅動程序通常是可執行模塊,與瀏覽器本身一起在系統上運行,而不是在執行測試套件的系統上。PS:有些人把驅動程序也稱為代理。框架:用於支持WebDriver套件的附加庫。這些框架可能是測試框架,如JUnit或NUnit。它們也可以是支持自然語言功能的框架,如Cucumber或Robotium。
  • Selenium WebDriver上創建 WebDriver測試腳本
    本文實現一個WebDriver測試腳本,介紹WebDrive的常用命令、UI元素定位的策略以及在腳本中的使用,還有Get命令。  你將學到:腳本創建代碼走查測試執行定位Web元素定位符類型及其語法總結  腳本創建部分仍然使用之前創建的「Learning Selenium」項目和「gmail.com」作為被測試應用程式(AUT)。
  • WebDriver常用方法
    這裡有愛,有分享,有工程師們的成長日記,點藍字「軟體測試面試匯總
  • 瀏覽器兼容性的自動化測試,這次有解決方案了
    文末有福利全套python自動化入門視頻,限時領取哦~在進行 Web 端測試的時候,為了保證網站能在不同的瀏覽器都有一個良好的表現,我們通常會進行瀏覽器的兼容測試。瀏覽器兼容測試的工具非常非常多,比如說大名鼎鼎的browserling。
  • selenium+Webdriver+jsoup爬蟲策略
    Part1文章首推Part2今日主題:selenium+Webdriver+jsoup爬蟲 我們為什麼要藉助webdriver來爬蟲呢?
  • 如何在Selenium WebDriver中處理Web表?
    隨著它的廣泛使用,您經常會遇到需要在Selenium測試自動化腳本中處理它們的場景。在本Selenium WebDriver教程中,我將看一下如何在Selenium中處理Web表以及可以在Web表上執行的一些有用操作。在本教程結束時,您將全面了解Selenium測試自動化中的Web表以及用於訪問Web表內容的方法。Selenium中的Web表是什麼?
  • 零基礎學習Selenium自動化測試(二)--瀏覽器driver的配置
    、火狐瀏覽器System.setProperty("webdriver.firefox.bin", "C:\\ProgramFiles\\MozillaFirefox\\firefox.exe");driver
  • selenium爬蟲:一行代碼去掉所有webdriver痕跡
    以及selenium爬蟲使用代理情況下不設置這幾個參數,代理就白加了,正確的關閉webrtc以及設置成代理的時區和地理位置,可以很好的幫我們的瀏覽器偽裝成正兒八經的正常瀏覽器,猶如濾鏡可以把王大媽變身成風靡萬千宅男的喬碧蘿。但是,這還不夠,風控系統有各種方式可以將你揪出來。
  • 【松勤軟體自動化測試】Python selenium | 用chrome模擬手機瀏覽器測試手機網頁
    很多人發現chrome有項功能,就是在開發者工具裡能夠模擬手機打開網頁,便想能否用selenium對此進行自動化測試。答案當然是yes!今天給大家分享下如何用chrome的MobileEmulation實現手機網頁自動化測試。1.
  • 編寫第一個python selenium-webdriver程序(二)
    Selenium2.x 將瀏覽器原生的API封裝成WebDriver API,可以直接操作瀏覽器頁面裡的元素,甚至操作瀏覽器本身(截屏,窗口大小,啟動,關閉,安裝插件,配置證書之類的),所以就像真正的用戶在操作一樣。其實selenium 就是來模擬用戶的行為,來實現的自動化測試。
  • python selenium-webdriver 執行js (八)
    使用python selenium 做自動化測試的時候其實我基本沒有使用過執行js,只是在後來使用selenium來爬蟲的時候使用到了,所以我在這裡也就拿出來簡單的介紹一下如何執行
  • 啟發之作 - 讓基於 webdriver 的日常調試方便些
    其實我們在編寫腳本的時候除了設計階段, 一定的時間是在調試測試步驟和element上. 但是常規的寫法在調試的時候每次總是要重啟webdriver包括seleium和appium, 不是很方便. 其實這個功能在一些收費的工具上是作為基本步驟的, 比如UFT或者RFT等功能自動化工具.
  • 反制 Webdriver - 從 Bot 到 RCE 進發
    [2],裡面分享了關於Webdriver的一些機制以及安全問題,通過一串攻擊鏈,成功實現了對Webdriver的RCE,我們就順著文章的思路來一起看看~WebDriver是W3C的一個標準,由Selenium主持。具體的協議標準可以從http://code.google.com/p/selenium/wiki/JsonWireProtocol#Command_Reference查看。
  • 使用Selenium WebDriver,Python和Chrome編寫您的第一個Web測試
    請注意,測試函數聲明了一個名為的參數browser,該參數  與我們用於ChromeDriver設置和清除的固定裝置相同。每次運行此測試時,pytest都會自動調用固定裝置並注入WebDriver參考。然後,測試函數使用該browser變量進行多個WebDriver調用。讓我們看看這些調用是如何工作的。
  • 使用Python和Chrome安裝Selenium WebDriver
    WebDriver是用於與實時Web瀏覽器進行交互的可編程界面。它使測試自動化能夠打開瀏覽器,發送點擊,鍵入鍵,刮擦文本並最終乾淨地退出瀏覽器。WebDriver界面是W3C建議書。WebDriver標準的最受歡迎的實現是Selenium WebDriver,它是免費和開放原始碼。WebDriver具有多個組件:語言綁定。
  • selenium3 瀏覽器驅動
    這裡有愛,有分享,有工程師們的成長日記,點藍字「軟體測試面試匯總
  • Selenium 自動偵測瀏覽器版本並下載對應的瀏覽器驅動 | 測試開發實用技能
    本文為霍格沃茲測試學院學員 @felix 測試開發實用技能分享,供大家參考,進階學習文末加群。在學院學員群交流時,有同學說 Appium 官方支持自動下載兼容的瀏覽器驅動,想來 Selenium 也有類似的方法,於是在網上搜索一番,並參考了 Medium 上的一篇文章所介紹的方法進行嘗試,對相關步驟進行了改進,增加了對多瀏覽器的支持。本文就總結下整體過程與實現代碼。
  • Python+Selenium+Threading進行兼容性測試
    1 前言  對於Web項目中,為了提升用戶的體驗感,我們無法避免需要進行兼容性測試。