zoukankan      html  css  js  c++  java
  • 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:Python27Scriptsphantomjs.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

  • 相关阅读:
    DGA域名可以是色情网站域名
    使用cloudflare加速你的网站隐藏你的网站IP
    167. Two Sum II
    leetcode 563. Binary Tree Tilt
    python 多线程
    leetcode 404. Sum of Left Leaves
    leetcode 100. Same Tree
    leetcode 383. Ransom Note
    leetcode 122. Best Time to Buy and Sell Stock II
    天津Uber优步司机奖励政策(12月28日到12月29日)
  • 原文地址:https://www.cnblogs.com/zl0372/p/selenium_driver.html
Copyright © 2011-2022 走看看