zoukankan      html  css  js  c++  java
  • Java + Selenium 系列之多线程并发执行用例

    一、Selenium   Grid 

    什么是Selenium  Grid?  

    Selenium  Grid是Selenium的三⼤组件之一

    Selenium  Grid允许⽤⼾同时在不同的机器和系统上测试不同浏览器

    二、Selenium  Grid组成
    hub节点

    中⼼节点,或总控节点 管理各个node节点的注册信息和状态信息 接收并转发客⼾端(测试脚本)请求到合适的node节点 node节点

    ⼦节点,或代理节点 负责注册配置信息到hub节点(平台、浏览器、浏览器版本等) 负责接收来⾃hub节点的转发的请求以执⾏具体⽤例 也可单独作为远程节点执⾏测试⽤例

    三、环境准备 

    测试机器安装JDK,配置环境变量

    下载selenium-server-standalone-x.x.x.jar

    参考链接https://npm.taobao.org/mirrors/selenium

    四、配置运⾏ 

    1、启动hub 

    java -jar selenium-server-standalone-3.141.59.jar -role hub -port 8888 -maxSession 10

    参数解释:

    java -jar selenium-server-standalone-3.141.59.jar ----------运⾏jar包

    -role hub   ----------以hub的⻆⾊运⾏

    -port 8888 ----------指定hub运⾏的端⼝(默认为4444)

    -maxSession  10   ---------最⼤的处理会话

    为了⽅便执⾏,可以写成bat脚本再执⾏

    2、查看hub的运⾏状态 

    浏览器中输⼊ http://localhost:8888/grid/console ,可以打开hub运行状态

    3、启动node 

    以chrome的配置为例:

    java -Dwebdriver.chrome.driver="chromedriver.exe" -jar selenium-server-standalone-3.141.59.jar -role node -hub "http://192.168.X.X:8888/grid/register" -port 5558 -browser "browserName=chrome,maxInstances=2,version=68,platform=WINDOWS"

    参数解释:

    Dwebdriver.chrome.driver=chromedriver.exe ---------指定chromeDriver驱动所在的路径(本地)

    -jar selenium-server-standalone-3.141.59.jar-----------运⾏jar包

    -role node -------------以node⻆⾊执⾏

    -hub "http://192.168.1.222:8888/grid/register" -----------------指定要链接的hub地址,这样node才能和hub通讯连接上

    -port 5558-----------node的执⾏端

    -browser  browserName=chrome,maxInstances=2,version=68,platform=WINDOWS

          browserName=chrome运⾏的浏览器名称

          maxInstances=2  最多⽀持两个浏览器⽰例

          version=68浏览器版本号

          platform=WINDOWS平台名称

    转换成bat脚本如下:

    4、执⾏脚本 

    node节点配置说明 

    node节点可以配置单⼀浏览器,如chrome、firefox、IE等等

    五、TestNG并发执⾏测试 
    Selenium Grid能够分布式在不同机器上运⾏不同浏览器,但是我们看到的串⾏的效果(也就是⼀个浏览器执⾏结束 后,再运⾏另外⼀个浏览器)。要达到并发执⾏的效果,Selenium Grid是做不

    的,我们需要通过TestNG单元测试 框架所带的并发执⾏机制。并发执⾏能够带来的好处:

    减少了执⾏时间:并⾏测试也就意味着多个浏览器可以在同⼀时间被同时执⾏,从⽽减少了整体测试所花费的时间,允许多个线程并⾏同时执⾏⼀个测试脚本/不同的测试脚本

    TestNG并发测试配置 

    解释:
    parallel=tests表⽰以test标签对为⼀个线程单位

    thread-count=2 线程数量

    六、线程安全

    在使用多线程执行用例的时候,我们发现有时候会出现错误,是因为共用静态变量时,同时执行会导致一个被占用,此时需要用ThreadLocal机制

    1、创建一个静态的变量

     2、设计两个方法去存取 或存放驱动

    3、在调用驱动的时候,使用getDriver方法

    例如:

  • 相关阅读:
    Codeforces_462_B
    Codeforces_460_B
    Codeforces_456_A
    2016.11.27
    Buy the Ticket{HDU1133}
    高精度模板
    盐水的故事[HDU1408]
    测试你是否和LTC水平一样高[HDU1407]
    完数[HDU1406]
    Air Raid[HDU1151]
  • 原文地址:https://www.cnblogs.com/wanshuang/p/12634022.html
Copyright © 2011-2022 走看看