UI自动化使用docker做并行执行

  在做UI自动化的时候,大部分人会遇到脚本执行过长的问题,这个一般通过并行处理。使用selenium grid做分发。

  但是传统的方案需要多个node节点,一般小公司无法提供如此多的服务器。改用VM虚拟机之后,虽然可以解决硬件的限制问题,VM搭建复杂,消耗资源过多,也是有其缺点。

在docker普及的如今,使用docker代替VM,已经十分成熟。这边就记录下,本人使用docker的一些实践。

  操作完全参考大神 https://testerhome.com/topics/8450

(一·)这边记录一些遇到的问题

1.开始下载的官方的hub和node,搭建之后,跑不通,node注册不成功

2.好不容易注册成功了,各种提示无session等信息

3.浏览器打开之后,无后续动作

->最后通过使用大神的镜像,一次性就可以调通

->所以可能官方镜像有一点小问题,不建议使用,可以自行制作镜像

(二)脚本要点

1.原来是调用本地浏览器的,现在需要修改为调用远端

 ChromeOptions cap = new ChromeOptions();
 cap.setCapability(CapabilityType.UNEXPECTED_ALERT_BEHAVIOUR,UnexpectedAlertBehaviour.IGNORE);
 WebDriver driver = new RemoteWebDriver(new URL("http://172.23.176.1:4444/wd/hub"), cap);

 最初使用的

DesiredCapabilities chromeDC = DesiredCapabilities.chrome();
ChromeOptions chromeDC = new ChromeOptions();
WebDriver driver = new RemoteWebDriver(new URL("http://172.23.176.1:4444/wd/hub"), chromeDC);

  会提示,使用 ChromeOptions()替代 DesiredCapabilities.chrome()

2.http://172.23.176.1:4444/wd/hub 地址就是hub的ip,而非node的ip

可以通过http://localhost:4444/grid/console 显示正常,来判断ip

 3.需要实时查看容器的话,需要使用VNC

本地安装VNC,且NODE也安装了VNC,官方镜像只有debug会自带VNC,所以还是建议自己做镜像,定制更强

4.testng框架自带并发功能,只需要在xml中修改部分参数

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="All Test Suite" parallel="methods" thread-count="3">
<test verbose="2" preserve-order="true" name="D:/testcases/testDocker">
    <classes>
        <class name="testDocker">
            <methods>
                <include name="testChrome"/>
                <include name="testChrome2"/>
            </methods>
        </class>
    </classes>
</test>
</suite>

  parallel也可以设置其他值,按照不同的维度并发,thread-count 线程也可以随意设置

(三)执行

1.可以在本地执行

2.也可以尝试搭建到jenkins上

原文地址:https://www.cnblogs.com/qiancaofengling/p/11497621.html