Selenium+Python瀏覽器調用:偽瀏覽器


WebDriver驅動介紹

因為移動端的driver目前沒有接觸,所以主要介紹PC端driver,PC端的driver都是基於瀏覽器的,主要分為2種類型:

  • 一種是真實的瀏覽器driver:safari、firefox、ie、chrome等

比如:safari、firefox、ie、chrome都是通過瀏覽器原生組件來調用瀏覽器的原生API,這些driver都是直接啟動並通過調用瀏覽器的底層接口來驅動瀏覽器的,因此具有最真實的用戶場景模擬,主要用於進行web的兼容性測試使用。

  • 一種是偽瀏覽器driver:htmlunit、PhantomJS

selenium支持的偽瀏覽器包括htmlunit、PhantomJS;他們都不是真正的在瀏覽器運行、都沒有GUI而是具有支持html、js 等解析能力的類瀏覽器程序;

這些程序不會渲染出網頁的顯示內容,但是支持頁面元素的查找、JS的執行等;由於不進行css及GUI渲染,所以運行效率上會 比真實瀏覽器要快很多,主要用在功能性測試上面。

 
驅動 說明
Firefox Driver 包含在各語言的 selenium(WebDriver) 包里, 這也是為什么安裝完 selenium 就可以直接使用 firefox 啟動腳本的原因。
Chrome Driver 需要下載 chromedriver ,因為webdriver 原本是谷歌的項目,之后與selenium 合並,所以對 chrome的支持也非常好
IE Driver 需要下載 IEDriverServer。
Opera Driver 要下載operaDriver,OperaDriver 是WebDriver 廠商Opera Software 和志願者開發了對於Opera的WebDriver 實現
HtmlUnit Driver htmlunit是java實現的類瀏覽器程序,它將返回文檔模擬成HTML, 從而模擬瀏覽器的運行, 但又非真正的去啟動一款瀏覽器去執行腳本包含在selenium server中,無需驅動,直接實例化即可
PhantomJS Driver PhantomJS 是一個擁有JavaScript API 的無界面WebKit , 可以被看作一個款無界面的瀏覽器。PhantomJS是第三方的一個獨立類瀏覽器應用,可以支持html、js、css等執行
Appium Appium 可以被看作移動端的Selenium ,它同樣支持多平台(iOS、Android及FirefoxOS ) 的app 及移動端web 的自動化測試

下面主要介紹兩種偽瀏覽器的簡單調用方法和對比,后續會單獨介紹Firefox和Ie瀏覽器調用的詳細內容及各類問題解決方法。

HTMLunit調用

HtmlUnit 官方網站:http://htmlunit.sourceforge.net/

本文采用本地的API查看地址來測試,可參考:前面的Selenium Python瀏覽器調用:Firefox文章中“如何查看python selenium的API來開啟地址

方法一:

#coding=utf-8

from selenium import webdriver

from time import ctime

from time import sleep

from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

print ctime()    

driver=webdriver.Remote(command_executor="http://127.0.0.1:5555/wd/hub",desired_capabilities=DesiredCapabilities.HTMLUNIT)

driver.get("http://127.0.0.1:4567")

driver.find_element_by_partial_link_text("selenium").click()

print driver.title

print driver.current_url

print driver.name

print ctime()

driver.close()

方法二:

#coding=utf-8

from selenium import webdriver

from time import ctime

from time import sleep

print ctime()    

driver = webdriver.Remote(

command_executor=' http://127.0.0.1:5555/wd/hub',

desired_capabilities={'platform': 'ANY',

'browserName': 'htmlunit',

'version': '',

'javascriptEnabled': True

})

driver.get("http://127.0.0.1:4567")

driver.find_element_by_partial_link_text("selenium").click()

print driver.title

print driver.current_url

print driver.name

print ctime()

driver.close()

二者的運行結果如下圖,因為測試過程無界面,所以打印時間,以及頁面title和url來判斷執行結果:

 

Wed Oct 14 17:29:22 2015
Python: package selenium
http://127.0.0.1:4567/selenium.html
htmlunit
Wed Oct 14 17:29:22 2015

運行前需要啟動selenium server,啟動方法如下:

1、C:\Users\admin>java -jar selenium-server-standalone-2.45.0.jar -role hub

2、C:\Users\admin>java -jar selenium-server-standalone-2.45.0.jar node -port 5555 -hub http://127.0.0.1:4444/grid/register

PhantomJS 調用

PhantomJS 官方網站:http://phantomjs.org/

在使PhantomJS 之前,需要先下載。PhantomJS 支持Windwos、MAC、Linux 等平台,我們可以根據自己的環境選擇相應的版本進行下載,下載完成解壓會得phantomjs-2.0.0-windows 目錄,在bin 目錄會看到phantomjs.exe 程序,將當前目錄添加到系統環境變量path 下。(或直接將phantomjs.exe 丟到Python 的安裝目錄下,因為我們最開始已將Python 添加到了系統環境變量的path 下)。

下面就可以使用phantomjs 驅動進行測試了。

#coding=utf-8

from selenium import webdriver

from time import ctime

from time import sleep

print ctime()    

driver=webdriver.PhantomJS(executable_path="c:\\python27\\phantomjs.exe")

driver.get("http://127.0.0.1:4567")

driver.find_element_by_partial_link_text("selenium").click()

print driver.title

print driver.current_url

print driver.name

driver.get_screenshot_as_file("c:\\photo.jpg")

print ctime()

driver.close()

運行結果如下,另外在C盤下可以看到截取的圖片,與實際操作的界面相符:

Wed Oct 14 17:29:50 2015
Python: package selenium
http://127.0.0.1:4567/selenium.html
phantomjs
Wed Oct 14 17:29:53 2015

 

瀏覽器對比

下面在HTMLunit、PhantomJS和Firefox中運行同一個腳本(使用上文中HTMLunit的演示腳本)

三者的時間分別為:HTMLunit:0s,PhantomJS:3s,Firefox:8s

下面對比一下各個瀏覽器的優缺點:

驅動類型 優點 缺點 應用
真實的瀏覽器驅動 真實模擬用戶行為 運行效率、穩定性低 web的兼容性測試使用
HtmlUnit 運行速度快 js 引擎非主流的瀏覽器支持 包含少量 js 的頁面測試
PhantomJS 運行速度快、 模擬行為接近真實瀏覽器 不能模擬特定瀏覽器的行為 非GUI的功能性測試

參考資料

[1],selenium webdriver的各種driver,

http://blog.csdn.net/five3/article/details/19085303


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM