zoukankan      html  css  js  c++  java
  • 分布式Selenium的配置思路

      在实际测试的环境中,有的时候我们需要配置多个远程主机来运行测试脚本。(尤其是面对多语言环境的情况下)那么,这时我们需要配置selenium Grid2 分布式自动化测试环境。

      selenium grid的组成与作用:由一个集线器hub和多个客户机node组成,如果你的程序需要在不同的浏览器,不同的操作系统上测试,而且比较多的case需要多线程远程执行,那么一个比较好的测试方案就是使用 selenium grid,hub用来管理各个代理节点的注册和状态信息,并且接受远程客户端代码的请求调用,然后把请求的命令再转发给代理节点来执行。
           来看下面一张图:
      

      假如,我自己写代码的是PC-A,而想运行的地方在PC-B,那么可以按照以下方式设定。(这里PC-A,PC-B均为Windows系统)

      在PC-A上(写脚本的机器),使用管理员权限打开cmd命令行,找到selenium-server-standalone-3.9.1.jar所在的路径(假设为c:abc),执行命令:

    java -jar c:abcselenium-server-standalone-3.9.1.jar -role hub -port 6667

       这里解释一下:

    c:abcselenium-server-standalone-3.9.1.jar  这个是jar包的路径。

    -role hub 是作为hub的角色运行

    -port 6667 是开放6667端口供其他的客户端来连接。

     PS:可以将上面的命令做成BAT文件,运行的时候双击一下即可。也可以加入开机启动,唯一的缺点就是会要有个窗口开在那里。

            在PC-B上(即运行脚本的机器)上,安装JDK,并设置java环境变量,并且将selenium-server-standalone-3.9.1.jar拷贝过去。使用管理员权限打开cmd命令行,找到selenium-server-standalone-3.9.1.jar所在的路径(假设为d:abc),输入以下命令:

    java -jar d:abcselenium-server-standalone-3.9.1.jar -role node -port 6667 -hub http://XXX.XXX.XXX.XXX:6667/grid/register/

    这里解释一下:

    -role node 是以mode角色来运行。

    -port 6667 -hub http://XXX.XXX.XXX.XXX:6667/grid/register/ 是开放6667端口来连接hub,-hub 后面是hub的地址。

    ps:当然这里也可以作成BAT文件。

      在进行以上的设定后。我们可以在自动化测试框架的browserUtil类中,封装一个remote_chrome的远程浏览器对象。可以参考下面一段代码:

            case "remote_chrome":
                try {
                    driver = new RemoteWebDriver(new URL("http://192.168.8.113:6667/wd/hub/"), DesiredCapabilities.chrome());
                } catch (MalformedURLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                driver.manage().window().maximize();
                driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
                log.info("打开浏览器,访问"+url+"网址!");
                Reporter.log("打开浏览器,访问"+url+"网址!");
                driver.get(url);
                break;

      当然,也可以封装其他浏览器的对象。

      在使用TestNG来写测试用例的时候,可以将这个写入到配置文件中。

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
    <suite name="SuiteTestA">
        
    <parameter name="browser" value="remote_chrome"/>
        
    <parameter name="url" value="http://192.168.1.23:4567/abc/index.html"/>
      
    <test name = "TestA">
        <classes>
          
    <class name = "testcase.autoOne"></class>
        
    </classes>
      
    </test> </suite>

      这样,我们运行这个xml就达到了A机器写脚本,B机器运行脚本的目的。

      

  • 相关阅读:
    基于 IAR 修改工程名称
    Baidu IoT Study
    msp430f5438a Information Flash Seg Write -- Chapter
    MFC 编辑框内容更新方法以及滚动条设置
    通过打开按钮打开文件和通过左键移动打开文件并计算crc
    移动文件并将文件路径显示到编辑框内
    Aritronix Virtual Device 运行
    将一个char类型的数转换成曼切斯特数
    数组中重复的数字
    平衡二叉树
  • 原文地址:https://www.cnblogs.com/generalli2019/p/12133910.html
Copyright © 2011-2022 走看看