我看到过很多与此问题相关的话题,但似乎找不到一个好的答案.他们都说要启动两个appium服务器,将设备同步到两个不同的端口,然后运行它.但是,这似乎不适用于我.这是我的工作.
>打开两个node.js终端
>使用folliwing命令启动两个appium服务器:node appium.js -p 4476 -U&节点appium.js -p 4475 -U每个appium服务器一个
>我发现两台服务器的Appium都从REST http接口开始于0.0.0.0 :(端口#).
>从testng文件运行测试.
<test name="Test 1">
<parameter name="deviceName" value=""/>
<parameter name="platformName" value="Android"/>
<parameter name="browserName" value="Chrome"/>
<parameter name="local" value="appium"/>
<parameter name="baseUrl" value="https://mtest.com/"/>
<parameter name="bsAccount" value="http://0.0.0.0:4476/wd/hub"/>
<classes>
<class name="com.testsuites.regression.Smoke"/>
</classes>
</test>
<test name="Regression">
<parameter name="deviceName" value=""/>
<parameter name="platformName" value="Android"/>
<parameter name="browserName" value="Chrome"/>
<parameter name="local" value="appium"/>
<parameter name="baseUrl" value="https://mtest.com/"/>
<parameter name="bsAccount" value="http://0.0.0.0:4475/wd/hub"/>
<classes>
<class name="com.testsuites.regression.Regression"/>
</classes>
</test>
是的,我已将相应的UDID放入deviceName参数中.我通过运行Windows 7的intellij来执行此操作.感谢您的帮助!
解决方法:
硒网格
Selenium Grid的构建是为了允许自动运行和处理多个Selenium会话.它可配置为多个设备(当与appium结合使用时),允许进行并行或标准测试,并允许您基于功能系统为每个设备创建节点.
毂
Selenium Grid Hub是一个中央服务器,它管理运行多个测试的能力.
> Download the Selenium Standalone Server
>运行以下命令以启动中心:
$java -jar path/to/selenium-server-standalone-X.X.X.jar -role hub -port 4444
节点
> Install node.js
>安装appium(除非您已经拥有)
$npm install –g appium
>每个节点都需要一个JSON文件,该文件概述了该节点将用于以下设备的功能:
{
"capabilities":
[
{
"browserName": "Chrome",
"deviceName": "deviceName",
"device": "device",
"udid":"XXXXXXXX",
"version":"X.X.X",
"maxInstances": 5,
"platform":"ANDROID",
"platformName": "Android"
}
],
"configuration":
{
"cleanUpCycle":2000,
"timeout":10000,
"proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
"url":"http://0.0.0.0:4723/wd/hub",
"maxSession": 5,
"port": 4723,
"host": "0.0.0.0",
"register": true,
"registerCycle": 5000,
"hubPort": 4444,
"hubHost": "localhost"
}
}
请记住,每个节点都需要为URL和端口配置使用不同的端口.例如4723.
>创建一个节点
$appium --nodeconfig /Path/To/Config.json -p 4723 -bp 5723 --chromedriver-port 6723
每个节点都需要三个唯一的端口(端口,引导程序端口,ChromeDriver端口),用-p指定的端口与配置中给定的端口相同.
测试中
我建议使用诸如TestNG或JUnit之类的测试框架,该框架将允许您运行测试套件并通过@BeforeClass方法等传递功能.
但是基本上您需要做的就是使用与特定节点的JSON配置文件中指定的功能相同的功能创建一个AndroidDriver,然后将该AndroidDriver实例与该特定节点相关联(Selenium Grid处理此操作),并与该设备相关联与节点关联的对象.一旦知道自己在做什么,这真的非常简单!
像这样初始化AndroidDriver:
driver.set(new AndroidDriver(new URL(SELENIUM_HUB_URL),
capabilities));
人们常犯的一个常见错误是,将AndroidDriver传递给节点URL而不是Hub URL(http://0.0.0.0:4723/wd/hub而不是http://0.0.0.0:4444/wd/hub),这确实是之所以常见,是因为它至少在开始时会起作用,但是随后在尝试使用任何Selenium Grid特定功能(例如多个设备)时,所有功能都会中断.
祝你好运,我希望这会有所帮助,
利亚姆
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。