selenium幫助手冊以及 webdriver的各種driver


幫助手冊 http://selenium-python.readthedocs.io/locating-elements.html

轉載於:http://blog.csdn.net/five3/article/details/19085303

selenium官方加上第三方宣布支持的驅動有很多種;除了PC端的瀏覽器之外,還支持iphone、Android的driver;大概記錄一下selenium支持的各種driver的用途與說明。

selenium可支持的PC瀏覽器驅動包括:

FF driver【包含在各自語言的客戶端里】

safari driver【包含在selenium server中】

ie driver

chrome driver 【第三方】

opera driver【第三方】

 

selenium可支持的偽瀏覽器驅動:

PhantomJS Driver【第三方】

HtmlUnit Driver【包含在selenium server中】

 

selenium可支持的移動端驅動:

Windows Phone driver 【第三方】

Selendroid -Selenium for Android【第三方】

ios-driver 【第三方】

Appium  支持iphone、ipad、android、FirefoxOS【第三方】

上述的所有驅動不僅可以直接通過各自語言客戶端來調用,還是注冊到selenium grid中進行分布式的遠程調用。

 

因為移動端的driver都沒有嘗試過,所以就不做說明。PC端的driver都是基於瀏覽器的,主要分為2種類型:

一種是真實的瀏覽器driver

比如:safari、ff都是以插件形式驅動瀏覽器本身的;ie、chrome都是通過二進制文件來驅動瀏覽器本身的;

這些driver都是直接啟動並通過調用瀏覽器的底層接口來驅動瀏覽器的,因此具有最真實的用戶場景模擬,主要用於進行web的兼容性測試使用。

 

一種是偽瀏覽器driver

selenium支持的偽瀏覽器包括htmlunit、PhantomJS;他們都不是真正的在瀏覽器、都沒有GUI,而是具有支持html、js等解析能力的類瀏覽器程序;這些程序不會渲染出網頁的顯示內容,但是支持頁面元素的查找、JS的執行等;由於不進行css及GUI渲染,所以運行效率上會比真實瀏覽器要快很多,主要用在功能性測試上面。

htmlunit是Java實現的類瀏覽器程序,包含在selenium server中,無需驅動,直接實例化即可;其js的解析引擎是Rhino

PhantomJS是第三方的一個獨立類瀏覽器應用,可以支持html、js、css等執行;其驅動是Ghost driver在1.9.3版本之后已經打包進了主程序中,因此只要下載一個主程序即可;其js的解析引擎是chrome 的V8。

 

 

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

 

PS:除上述的幾種真實瀏覽器driver中,也可以通過不同的手段來取消瀏覽器的css解析、界面渲染等目的;這樣既可以保證瀏覽器的真實兼容性、也可以提高執行效率問題;使用的手段有:autoit、pyvirtualdisplay、瀏覽器設置等。

 

幾種PC端driver的效率比較

from selenium import webdriver
import time

drivers = ['HtmlUnit', 'PhantomJS', 'Chrome', 'FF', 'IE'] 

dervers_time = {
    'HtmlUnit' : 0,
    'PhantomJS' : 0,
    'Chrome' : 0,
    'FF' : 0,
    'IE' : 0,
}
times = 50
def run_with_Chrome():
    common_step(webdriver.Chrome())

def run_with_FF():
    common_step(webdriver.Firefox())
    
def run_with_IE():
    common_step(webdriver.Ie())

def run_with_PhantomJS():
    common_step(webdriver.PhantomJS(executable_path=r'C:\Python27\Scripts\phantomjs.exe'))
    
def run_with_HtmlUnit():
    driver = webdriver.Remote("http://localhost:4444/wd/hub", 
                                desired_capabilities=webdriver.DesiredCapabilities.HTMLUNIT)
    common_step(driver)
    
def common_step(driver):
    driver.get('http://www.baidu.com')
    ele = driver.find_element_by_id('su')
    print ele.get_attribute('value')
    driver.quit()

for i in range(times):
    print '=============Times %s============' % i
    for driver in drivers:
        start = time.time() 
        print start
        eval('run_with_%s()'%driver)
        end = time.time() 
        print end
        elapse_time = end-start
        dervers_time[driver] += elapse_time
        print 'elapse for %s:%s' % (driver, elapse_time)
    
for k,v in dervers_time.items():
    print 'avg elapse for %s in %s times:%s' % (k, times, v/times)

得出的結果:

最快的依次是htmlunit、PhantomJS、chrome、ie、ff


免責聲明!

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



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