• 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

  • 相关阅读:
    Angularjs实现分页--并展示
    angularjs后台查询所有,前台实现分页显示 https://my.oschina.net/gmd/blog/670895
    springmvc导出excel到本地,弹出下载路径选择框
    文件下载
    springmvc测试类中如何引入controller与service,request,respon
    读取数据到txt中
    junit测试时报错 ass not found com.mogodb.test.test java.lang.ClassNotFoundException: com.mogodb.test.test at java.net.URLClassLoader$1.run(URLClassLoader.java:202) at java.security.AccessController.doPri
    pom.xml中添加client jar包
    angluarjs+springmvc实现excel上传并解析,对个别字段进行非空校验,txt生成,txt生成的条件为某列必须为某值且只提供固定的几列发送到ftp
    python的min()函数也可用于比较tuple
  • 原文地址:https://www.cnblogs.com/zl0372/p/selenium_driver.html
Copyright © 2020-2023  润新知