Ruby 如何使用selenium网格与appium运行并行测试?
我在我的机器上试用了两台不同的appium服务器,在一台服务器上启动iOS测试,在另一台服务器上启动Android测试。我也尝试在两台服务器上执行,以在不同的iOS中进行测试 但问题是,当我执行两个iOS时,应该在iOS1中进行的测试在iOS中进行,但并不总是有时间在iOS1和shuffle上运行,然后在iOS2上执行,否则,所有测试都会陷入混乱。那么我不能以这种格式并行执行测试 对于Android+iOS,只有对iOS的测试才能进行Ruby 如何使用selenium网格与appium运行并行测试?,ruby,selenium,cucumber,appium,selenium-grid,Ruby,Selenium,Cucumber,Appium,Selenium Grid,我在我的机器上试用了两台不同的appium服务器,在一台服务器上启动iOS测试,在另一台服务器上启动Android测试。我也尝试在两台服务器上执行,以在不同的iOS中进行测试 但问题是,当我执行两个iOS时,应该在iOS1中进行的测试在iOS中进行,但并不总是有时间在iOS1和shuffle上运行,然后在iOS2上执行,否则,所有测试都会陷入混乱。那么我不能以这种格式并行执行测试 对于Android+iOS,只有对iOS的测试才能进行 如何使用appium和Ruby并行执行测试,如果无法并行运行
如何使用appium和Ruby并行执行测试,如果无法并行运行,如何在线运行?您需要正确的功能定义和请求 从我的旧笔记(不幸的是Android): 停止/杀死Selenium服务器、所有Appium实例和所有测试(Ruby/Cucumber) 启动Selenium服务器
java -jar selenium-server-standalone-3.6.0.jar -role hub
保存SM_G900F.json
:
{
"capabilities":
[
{
"applicationName":"SM_G900F",
"browserName":"android",
"deviceName":"SM_G900F",
"version":"7.0",
"maxInstances":1,
"platform":"Android"
}
],
"configuration":
{
"cleanUpCycle":2000,
"timeout":30000,
"proxy":"org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
"url":"http://127.0.0.1:80801/wd/hub",
"maxSession":6,
"port":"80801",
"bootstrap-port":"80802",
"host": "localhost",
"register": true,
"registerCycle": 5000,
"hubPort": "4444",
"hubHost": "localhost"
}
}
确保将80801
和80802
更改为每个设备的空闲端口
运行应用程序:
appium --nodeconfig /path_to/SM_G900F.json -p 80801 --default-capabilities '{"udid":"BOGAA1BBB412"}'
其中udid是adb设备
提供给您的,并且再次更改801
检查设备是否在上正确注册
最后在ruby中:
require 'appium_lib'
opts_dut = {
caps: {
platformName: :android,
version: '7.0',
deviceName: '*',
appPackage: 'your.package',
appActivity: 'your.MainActivity',
noReset: true,
autoLaunch: false,
automationName: 'uiautomator2'
},
appium_lib: {
server_url: 'http://127.0.0.1:4444/wd/hub',
wait_timeout: 300,
wait_interval: 100,
newCommandTimeout: 3000
}
}
@T = Appium::Driver.new(opts_dut, true).start_driver
@T.find_elements(:uiautomator, "new UiSelector().textMatches(\"(?is).*SEND.*\"))")
puts @T.page_source
@T.quit
如果我记得很清楚,请求
deviceName
和/或version
只能很好地工作。因此,如果您启动多个节点并正确指定deviceName
和version
,那么您可以多次请求它,即使是并行的。如果使用通配符*
,如上述示例所示,则表示任何设备名称
,因此仅请求版本
<7.0。确保运行@T.quit
以释放设备,即使您的测试失败(挂接后将其放入) 说到使用ruby的Appium,你是在使用Cucumber Gherkin ruby设置吗?@Vighnespai,我在使用这个设置