zoukankan      html  css  js  c++  java
  • (六十一)Selenium Grid2之WebDriver驱动

    随笔记录方便自己和同路人查阅。

     

    #------------------------------------------------我是可耻的分割线-------------------------------------------

    WebDriver驱动

    在前几篇文章中,我们对WebDriver驱动的实现进行了简单分析,到目前为止,我们所熟悉的浏览器驱动有:Firefox DriverChrome DriverIEDriverServer等。除此之外,WedDriver还支持哪些平台及驱动呢?我们下面慢慢来看。

    WedDriver所支持的平台/浏览器/模式如下表:

    平台/浏览器/模式

    驱动

    说明

    Android

     

    支持脚本在Android WebView应用的测试,一般指移动端浏览器

    BlackBerry

     

    支持脚本在黑莓浏览器上运行

    Firefox

    包含在Selenium安装包中

    包含在个语言的Selenium(WebDriver)包里,这也是为什么安装完Selenium后就可以直接使用Firefox浏览器运行脚本的原因

    Chrome

    Chromedriver.exe

    因为WebDriver原本为谷歌的项目,之后与Selenium项目合并,所以对Chrome浏览器的支持也非常好

    IE

    IEDriverServer.exe

    需要下载驱动支持,用于驱动脚本在IE系列的浏览器下运行

    Edge

    MicrosoftWebDriver.exe

    支持脚本在Windows10操作系统Edge浏览器下执行

    Opera

    Operadriver.exe

    关于Opera浏览器的前世今生比较复杂,总之,现在的OperaChromiumDriver(原OperaDriver)基于ChromeDriver

    Safari

    包含在Selenium Server

    Safari浏览器由苹果公司开发,最早运行于苹果自家MAC平台,目前也提供Windows版本

    HtmlUnit

    包含在Selenium Server

    HtmlUnit将请求返回文档模拟成HTML,从而模拟浏览器的运行,但又非真正地启动一款浏览器执行脚本

    PhantomJS

    phantomjs.exe

    PhantomJS是一个拥有JavaScript API的无界面WebKit,和HtmlUnit类似,可以看作是一款无界面的浏览器

    1. 支持平台

    WebDriver支持AndroidBlackBerry两个移动平台的浏览器测试,至于支持性如何,笔者并没有做过测试。Android目前为市场占有率第一的移动平台,对于在其上面进行自动化测试,笔者推荐AppiumAppium扩展了WebDriver的协议,支持IOS平台和Android平台上的原生应用、Web应用和混合应用等。

    BlackBerry平台目前的时长占有率很小,国内时长就更少了。

    2. 支持浏览器

    WebDriver目前所支持的浏览器包括:FirefoxChromeIEEdgeOperaSafari

    为什么会选择上面几款浏览器进行支持呢?主要与浏览器的内核有关。

    3. 支持模式

    HtmlUnitPhantomJS是两个比较特殊的模式,我们可以把它们看作是伪浏览器,在这种模式下支持htmlJavaScript等得解析,但不会真正地渲染出页面。由于不进行CSSGUI渲染,所以运行效率上要比真实的浏览器快很多,主要用在功能性测试上面。

    Edge浏览器

    目前Selenium2.47.0版本已经支持Edge浏览器,不过,Edge浏览器只能运行于Windows10。与IE浏览器一样,要想让测试用例在浏览器上运行,需要改浏览器的驱动,但是我们现在并不知道驱动名称和下载地址。当然,我们可以到Selenium官网上寻找答案。不过,这里介绍一种简单粗暴的方式,直接使用报错大法。

     

     在错误信息的最后给出了Edge驱动的下载地址( http://go.microsoft.com/fwlink/?LinkId=619687),复制链接下载MicrosoftWebDriver.msi文件。双击安装,将安装目录添加到系统环境变量path下,或将安装文件夹下的MicrosoftWebDriver.exe文件复制到C:Python3.5目录下(该目录已经添加到系统环境变量path下)。

    下面就可以使用Edge浏览器运行测试脚本了。

     

    from selenium import webdriver
    
    driver = webdriver.Edge()
    driver.get('http://www.baidu.com')
    
    driver.find_element_by_id('kw').send_keys('Edge')
    driver.find_element_by_id('su').click()
    
    driver.quit()

     

    Opera浏览器

    Opera浏览器的发展不多介绍。最近Opera浏览器采用Blink内核,需要OperaChromiumDriver驱动支持。

    GitHub地址:https://github.com/operasoftware/operachromiumdirver

    下载operadriver_win64.zip,解压后将得到operadriver.exe文件,同样将其放到C:Python3.5目录下,原因同上。

    from selenium import webdriver
    
    driver = webdriver.Opera()
    driver.get('http://www.baidu.com')
    
    driver.find_element_by_id('kw').send_keys('Edge')
    driver.find_element_by_id('su').click()
    
    driver.quit()

     

    Safari浏览器

    Safari为苹果公司的浏览器,最早支持MAC平台,不过,现在已经支持Windows平台。与其他浏览器有所不同,Safari浏览器没有相应的驱动文件,它的驱动被继承到了Selenium Server中,所以,需要通过Remote配置运行。

    首先,在Windows命令提示符下启动Selenium Server

    java -jar selenium-server-standalone-3.141.59.jar

    然后,运行脚本。

    from selenium.webdriver import Remote
    
    dc = {'browserName':'safari'}
    driver = Remote(command_executor='http://127.0.0.1:444/wd/hub',
                    desired_capabilities=dc
                    )
    
    driver.get('http://www.baidu.com')
    
    driver.find_element_by_id('kw').send_keys('Edge')
    driver.find_element_by_id('su').click()
    
    driver.quit()

    HtmlUnit模式

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

    HtmlUnit是一款开元的Java页面分析工具,读取页面后,可以有效地使用HtmlUnit分析页面上的内容。项目可以模拟浏览器运行,被誉为Java浏览器的开源实现。这个没有界面的浏览器,其运行速度非常迅速Selenium Server中同样包含了HtmlUnit驱动。

    首先,在Windows命令提示符下启动Selenium Server

    java -jar selenium-server-standalone-3.141.59.jar

    然后,运行脚本。

    from selenium.webdriver import Remote
    
    dc = {'browserName':'htmlunit'}
    driver = Remote(command_executor='http://127.0.0.1:444/wd/hub',
                    desired_capabilities=dc
                    )
    
    driver.get('http://www.baidu.com')
    
    driver.find_element_by_id('kw').send_keys('Edge')
    driver.find_element_by_id('su').click()
    
    driver.quit()

    这种模式下运行脚本并不会真正地打开浏览器,整个过程都是在后台执行的。所以,为了证明运行是成功的,或者证明脚本确实执行了,可以在适当的步骤添加截图。

    PhantomJS模式

    PhantomJS官方网址:http://phantomjs.org/

    PhantomJS是一个拥有JavaScript API的无界面WebKit内核,与HtmlUnit类似。正如我们所知道的,WebKitSafari和其他一些浏览器使用的布局引擎。因此PhantomJS是一个浏览器,而且是一个无界面的浏览器。这意味着渲染后的网页实际上绝不会显示。这或许有些不可思议,所以我们可以把它作为一个可编程的浏览器终端。

    在使用PhantomJS之前,需要先下载它。PhantomJS支持WindowsMACLinux等平台,我们可以根据自己的环境选择相应的版本进行下载。

    下载完成后解压得到phantomjs.exe程序,将其复制到C:Python3.5目录下(该目录已经添加到系统环境变量path下)。

     

    from selenium import webdriver
    from selenium.common.exceptions import WebDriverException
    from time import sleep
    
    driver = webdriver.PhantomJS()
    driver.get('http://www.baidu.com')
    try:
        driver.find_element_by_id('kw').send_keys('Edge')
        driver.find_element_by_id('su').click()
        sleep(1)
        driver.get_screenshot_as_file('d:\baidu_ok.jpg')
    except WebDriverException as msg:
        print(msg)
        driver.get_screenshot_as_file('d:\baidu_error.jog')
    finally:
        driver.quit()

     

    通过HtmlUnitPhantomJS进行的自动化测试运行不会真正打开一个浏览器,在我们看来,可见的东西才会觉得是真实的,这时可以在娇嫩必要的位置添加截图,另一方面,截图也可以帮助我们定位。打开。

    平台/浏览器/模式

    驱动

    说明

    Android

     

    支持脚本在Android WebView应用的测试,一般指移动端浏览器

    BlackBerry

     

    支持脚本在黑莓浏览器上运行

    Firefox

    包含在Selenium安装包中

    包含在个语言的Selenium(WebDriver)包里,这也是为什么安装完Selenium后就可以直接使用Firefox浏览器运行脚本的原因

    Chrome

    Chromedriver.exe

    因为WebDriver原本为谷歌的项目,之后与Selenium项目合并,所以对Chrome浏览器的支持也非常好

    IE

    IEDriverServer.exe

    需要下载驱动支持,用于驱动脚本在IE系列的浏览器下运行

    Edge

    MicrosoftWebDriver.exe

    支持脚本在Windows10操作系统Edge浏览器下执行

    Opera

    Operadriver.exe

    关于Opera浏览器的前世今生比较复杂,总之,现在的OperaChromiumDriver(原OperaDriver)基于ChromeDriver

    Safari

    包含在Selenium Server

    Safari浏览器由苹果公司开发,最早运行于苹果自家MAC平台,目前也提供Windows版本

    HtmlUnit

    包含在Selenium Server

    HtmlUnit将请求返回文档模拟成HTML,从而模拟浏览器的运行,但又非真正地启动一款浏览器执行脚本

    PhantomJS

    phantomjs.exe

    PhantomJS是一个拥有JavaScript API的无界面WebKit,和HtmlUnit类似,可以看作是一款无界面的浏览器

  • 相关阅读:
    从B树、B+树、B*树谈到R 树
    从LSM-Tree、COLA-Tree谈到StackOverflow、OSQA
    Linux Kafka源码环境搭建
    CentOS 关闭图形用户界面
    部署与管理ZooKeeper(转)
    spark 2.0.0集群安装与hive on spark配置
    hive on spark的坑
    Spark2.0.0源码编译
    hive spark版本对应关系
    CentOS7 设置集群时间同步
  • 原文地址:https://www.cnblogs.com/lirongyang/p/12052626.html
Copyright © 2011-2022 走看看