我有一個運行在安裝了Appium和Xcode的Mac上的自動化框架。我想一次在多個模擬器中運行我的測試用例。如何在同一臺機器上打開多個模擬器?同一個Appium Session上的多個iOS模擬器
1
A
回答
1
根據Appium文檔,這是不可能的一臺機器(http://appium.io/slate/en/master/?csharp#appium-platform-support)。很可能是因爲Apple儀器一次只允許一個設備被控制。
但是,如果你有一個Selenium Grid,這是可能的。您可以在這裏找到這些說明:http://appium.readthedocs.org/en/stable/en/advanced-concepts/grid/這需要使用多臺OS X機器作爲節點。
0
由於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
相關問題
- 1. 使用appium在多個iOS模擬器上並行執行
- 2. 模擬一個SESSION,在Angular2
- 3. Appium的iOS模擬器安裝錯誤
- 4. 如何設置iOS模擬器的appium?
- 5. driver.setLocation()不適用於iOS appium模擬器
- 6. 多個併發的iOS模擬器
- 7. 看到多個相同類型的ios模擬器
- 8. 如何在3個android模擬器和1個iOS模擬器上同時觸發相同的動作?
- 9. 在iOS模擬器上使用selenium啓用/禁用Wifi/Appium
- 10. 同時啓動多個Android模擬器
- 11. 在同一個虛擬服務器上有多個Asp.Net WebApplication Project
- 12. 在appium上使用IOS模擬器並行執行ios測試用例
- 13. 用於在iOS模擬器上測試瀏覽器的Nightwatch/Appium配置
- 14. 有沒有辦法一次運行多個iOS模擬器?
- 15. 開放Firefox瀏覽器在IOS模擬器使用Appium
- 16. 滾動不適用於使用appium的iOS模擬器
- 17. iOS模擬器在最後一個版本上繼續調試
- 18. 跨不同域的多臺服務器共享一個SESSION
- 19. 多個RadioButtons模擬器
- 20. connectedAndroidTest多個模擬器
- 21. 同時在多個模擬器上啓動Android應用程序
- 22. 好的模擬器/模擬器(Android,iOS)
- 23. 如何針對Appium/iOS模擬器運行Intern?
- 24. Appium自動化與iOS模擬器不工作
- 25. 同一頁上的多個模板
- 26. Facebook的SDK iOS上的模擬器
- 27. Xpath與Appium iOS的容器與多個元素
- 28. 同時訪問Session的多個文件
- 29. 不能同時運行兩個或多個android模擬器
- 30. WCF Web Services - 同一臺服務器上的多跳模擬