Appium+TestNG+Grid并行运行测试用例

Appium支持一台电脑上并行运行多台测试设备,通过启动grid hub服务,注册多个节点设备,然后配置相应的testng.xml文件,达到并行运行测试的目的。

    目前有两种方式启动多个Appium Server

  • 一种是npm安装Appium,用命令行来启动Appium Server;
  • 一种是直接安装的客户端,在Appium客户端直接设置和添加json文件,手动来启动。

    命令行的方式更快捷,不需要每次打开Appium客户端设置,本文先介绍用Appium 客户端直接启动服务。

步骤:

1,启动Selenium Grid服务:进入selenium-server-standalone-2.48.2.jar目录,运行命令:java -jar selenium-server-standalone-2.48.2.jar -role hub

      或者把上面命令写成如下批处理文件,保存在grid目录下,运行时直接双击.bat文件即可。

<span style="font-size:18px;">@echo off
echo 正在启动appium grid服务,请稍等。
echo 启动完毕之后,请不要关闭此窗口。
echo 当你看到“Selenium Grid hub is up and running”则表示启动成功。
java -jar selenium-server-standalone-2.48.2.jar -role hub</span>


2,启动各节点Appium Server:

      node命令启动时主要参数如下:

  • -p Appium主端口
  • -U 设备ID
  • -bp Appium bootstrap端口
  • --chromedriver-port  chomedriver 端口(如果使用Webviews或者chrome)
  • --selendriod-port   selendriod port)(如果使用selendriod)

     node . -p 4492 -bp 2251 -U 设备1的ID

     node . -p 4491 -bp 2250 -U 设备2的ID


    例如:

   appium --address 127.0.0.1 --port 4723  --bootstrap-port 4724 --session-override --nodeconfig  nodeconfig1.json(在grid目录下运行)

    其中nodeconfig1.json 是节点配置文件,代码如下:

<span style="font-size:18px;">{
    "capabilities": [
        {
            "browserName": "HUAWEI GRA-UL 10",
            "version": "5.0.1",
            "maxInstances": 1,
            "platform": "WINDOWS"
        }
    ],
    "configuration": {
        "cleanUpCycle": 2000,
        "timeout":30000,
        "proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
        "url":"http://127.0.0.1:4723/wd/hub",
        "host": "127.0.0.1",
        "port": 4723,
        "maxSession": 1,
        "register": true,
        "registerCycle": 5000,
        "hubPort": 4444,
        "hubHost": "127.0.0.1" 
    }
}
</span>
<span style="font-size:18px;">
</span>


 直接配置Appium客户端相关参数来启动节点服务:

Appium Server端口号和节点配置文件如图一红圈所示位置配置,其他端口配置如图二所示,配置完成点击启动按钮:


图二:


启动成功:



同样地启动第二个节点服务:



testng.xml中关于设备的配置信息:

        <test name="主页-设备1">
		<parameter name="udid" value="A7J5T16120004478" />
		<parameter name="deviceName" value="HUAWEI GRA-UL 10" />
		<parameter name="platformVersion" value="5.0.1" />
		<classes>
			<class name="com.appiumzhihu.testcases.home.HomePage_001_SearchWord_Test" />
		</classes>
	</test>

	<test name="登录-设备2">
		<parameter name="udid" value="852bf20a" />
		<parameter name="deviceName" value="Lenovo K32c36" />
		<parameter name="platformVersion" value="5.1.1" />
		<classes>
			<class name="com.appiumzhihu.testcases.login.LoginPage_001_LoginSubmit_Test" />
		</classes>
	</test></span>

运行过程如图:



添加更多设备就再启动一个Appium Server,添加nodeconfig3.json文件,配置文件添加相应的参数。

可以通过打开console检查node节点是否注册成功:



存在的问题:因为三台设备运行的用例都依赖于登录这个@test,登录的账号又是同一个,所以数据不能公用,因此只有一台设备能运行通过,继续研究如何解决数据的问题。

猜你喜欢

转载自blog.csdn.net/maryshine/article/details/53078969