qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請(qǐng)?jiān)L問(wèn) http://qaseven.github.io/

          Selenium webdriver的各種driver

          selenium官方加上第三方宣布支持的驅(qū)動(dòng)有很多種;除了PC端的瀏覽器之外,還支持iphoneandroid的driver;大概記錄一下selenium支持的各種driver的用途與說(shuō)明。
            selenium可支持的PC瀏覽器驅(qū)動(dòng)包括:
            FF driver【包含在各自語(yǔ)言的客戶端里】
            safari driver【包含在selenium server中】
            ie driver
            chrome driver 【第三方】
            opera driver【第三方】
            selenium可支持的偽瀏覽器驅(qū)動(dòng):
            PhantomJS Driver【第三方】
            HtmlUnit Driver【包含在selenium server中】
            selenium可支持的移動(dòng)端驅(qū)動(dòng):
            Windows Phone driver 【第三方】
            Selendroid -Selenium for Android【第三方】
            ios-driver 【第三方】
            Appium  支持iphone、ipad、android、FirefoxOS【第三方】
            上述的所有驅(qū)動(dòng)不僅可以直接通過(guò)各自語(yǔ)言客戶端來(lái)調(diào)用,還是注冊(cè)到selenium grid中進(jìn)行分布式的遠(yuǎn)程調(diào)用。
            因?yàn)橐苿?dòng)端的driver都沒(méi)有嘗試過(guò),所以就不做說(shuō)明。PC端的driver都是基于瀏覽器的,主要分為2種類型:
            一種是真實(shí)的瀏覽器driver
            比如:safari、ff都是以插件形式驅(qū)動(dòng)瀏覽器本身的;ie、chrome都是通過(guò)二進(jìn)制文件來(lái)驅(qū)動(dòng)瀏覽器本身的;
            這些driver都是直接啟動(dòng)并通過(guò)調(diào)用瀏覽器的底層接口來(lái)驅(qū)動(dòng)瀏覽器的,因此具有最真實(shí)的用戶場(chǎng)景模擬,主要用于進(jìn)行web的兼容性測(cè)試使用。
            一種是偽瀏覽器driver
            selenium支持的偽瀏覽器包括htmlunit、PhantomJS;他們都不是真正的在瀏覽器、都沒(méi)有GUI,而是具有支持html、js等解析能力的類瀏覽器程序;這些程序不會(huì)渲染出網(wǎng)頁(yè)的顯示內(nèi)容,但是支持頁(yè)面元素的查找、JS的執(zhí)行等;由于不進(jìn)行css及GUI渲染,所以運(yùn)行效率上會(huì)比真實(shí)瀏覽器要快很多,主要用在功能性測(cè)試上面。
            htmlunit是java實(shí)現(xiàn)的類瀏覽器程序,包含在selenium server中,無(wú)需驅(qū)動(dòng),直接實(shí)例化即可;其js的解析引擎是Rhino
            PhantomJS是第三方的一個(gè)獨(dú)立類瀏覽器應(yīng)用,可以支持html、js、css等執(zhí)行;其驅(qū)動(dòng)是Ghost driver在1.9.3版本之后已經(jīng)打包進(jìn)了主程序中,因此只要下載一個(gè)主程序即可;其js的解析引擎是chrome 的V8。
            driver類型優(yōu)點(diǎn)缺點(diǎn)應(yīng)用
            真實(shí)瀏覽器driver真實(shí)模擬用戶行為效率、穩(wěn)定性低兼容性測(cè)試
            HtmlUnit速度快js引擎不是主流的瀏覽器支持的包含少量js的頁(yè)面測(cè)試
            PhantomJS速度中等、模擬行為接近真實(shí)不能模擬不同/特定瀏覽器的行為非GUI的功能性測(cè)試
            PS:除上述的幾種真實(shí)瀏覽器driver中,也可以通過(guò)不同的手段來(lái)取消瀏覽器的css解析、界面渲染等目的;這樣既可以保證瀏覽器的真實(shí)兼容性、也可以提高執(zhí)行效率問(wèn)題;使用的手段有:autoit、pyvirtualdisplay、瀏覽器設(shè)置等。
          幾種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)
            得出的結(jié)果:
            最快的依次是htmlunit、PhantomJS、chrome、ie、ff

          posted on 2014-02-18 11:29 順其自然EVO 閱讀(2107) 評(píng)論(0)  編輯  收藏 所屬分類: selenium and watir webdrivers 自動(dòng)化測(cè)試學(xué)習(xí)

          <2014年2月>
          2627282930311
          2345678
          9101112131415
          16171819202122
          2324252627281
          2345678

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 图木舒克市| 和静县| 尼木县| 泰和县| 汉沽区| 涿州市| 开鲁县| 江阴市| 龙江县| 吕梁市| 巴楚县| 竹北市| 遵义县| 邹城市| 车险| 资阳市| 太原市| 南溪县| 阿拉善盟| 甘孜县| 西青区| 密山市| 临湘市| 上林县| 北京市| 宁城县| 准格尔旗| 卢氏县| 冕宁县| 宁陕县| 柞水县| 孟村| 布尔津县| 阜新| 潼南县| 神农架林区| 临洮县| 绥宁县| 大庆市| 安康市| 新野县|