2016-03-06 55 views
1

我有一个运行在MAC中的自动化框架,它打开一个模拟器槽Appium。我想打开多个iOS模拟器来同时运行不同的测试用例,我有哪些选择?使用appium在多个iOS模拟器上并行执行

+0

你可以做到这一点,但在多台Mac不在同一台Mac! –

回答

0

1 mac中1设备appium的技术限制可以通过使用Sauce Lab's移动云来解决,该设备同时运行多个模拟器/设备。你需要注册/注册使用它们

1

由于Xcode 9和Appium 1.7,现在可以实现了。关键是wdaLocalPort的能力。每个模拟器都需要自己的端口。

下面是一个例子,我使用的红宝石,但它会在其他语言的相似,以及:

require 'appium_lib' 

opts = { 
    caps: { 
    automationName: 'XCUITest', 
    platformName: 'iOS', 
    deviceName: 'iPhone 7', 
    wdaLocalPort: 8001, 
    app: 'Example.app', 
    }, 
} 

10.times do 
    driver = Appium::Driver.new(opts, true) 
    driver.start_driver.manage.timeouts.implicit_wait = 10 
    driver.find_element(:name, 'Button').click 
    driver.driver_quit 
end 

我不能打扰实现并发,所以你必须手动执行下一个脚本与第一个脚本同时发生。

require 'appium_lib' 

opts = { 
    caps: { 
    automationName: 'XCUITest', 
    platformName: 'iOS', 
    deviceName: 'iPhone 8', 
    wdaLocalPort: 8002, 
    app: 'Example.app', 
    }, 
} 

10.times do 
    driver = Appium::Driver.new(opts, true) 
    driver.start_driver.manage.timeouts.implicit_wait = 10 
    driver.find_element(:name, 'Button').click 
    driver.driver_quit 
end 

我还没有玩过这个太多,但是当我用了两个模拟器,我在同一时间跑了两次测试的量。看看它的规模会不会很有趣。


编辑:证明,我可以不屑于实现并发:

require 'appium_lib' 

device_names = [ 
    'iPhone 6', 
    'iPhone 6s', 
    'iPhone 7', 
    'iPhone 8', 
] 

def test(device_name, port) 
    opts = { 
    caps: { 
     automationName: 'XCUITest', 
     platformName: 'iOS', 
     deviceName: device_name, 
     wdaLocalPort: port, 
     app: 'Example.app', 
    }, 
    } 
    driver = Appium::Driver.new(opts, true) 
    driver.start_driver.manage.timeouts.implicit_wait = 10 
    driver.find_element(:name, 'Button').click 
    driver.driver_quit 
end 

device_names.each_with_index do |device_name, i| 
    fork { 
    10.times do 
     test(device_name, 8000+i) 
    end 
    } 
end 

Process.waitall 

以上将启动你的device_names数组中指定,并运行在每个10个测试尽可能多的模拟器其中。我还写了一个更复杂的基准脚本。在3到4个模拟器之间,我的性能提升不到10%,所以运行超过4个似乎并不值得,但我想这取决于你的系统。

随着您启动越来越多的模拟器,您可能会用完系统资源。以下是你如何处理:https://stackoverflow.com/a/46819409/310121

相关问题