當前位置:首頁 > IT技術 > 移動平臺 > 正文

一日一技:Airtest連接多個手機的時候,如何start_app?
2021-09-17 16:40:30

一日一技:Airtest連接多個手機的時候,如何start_app?_android

我們在看Airtest的文檔時,肯定會發(fā)現(xiàn)它有這樣一段代碼:

一日一技:Airtest連接多個手機的時候,如何start_app?_f5_02

方框中的這一段代碼的意思是,通過包名來啟動一個App。

當你電腦只連接了1臺手機的時候,這樣做是沒有問題的,但是你有沒有考慮過,如果你電腦里面連接了很多臺手機,那么你直接這樣沒頭沒尾的 start_app啟動一個App,你啟動的是哪個手機上的App?

要解決這個問題,就要從如何連接多臺手機這個話題說起了。關于如何連接多臺手機,Airtest的官方文檔可以說是寫的非常模糊。

經(jīng)過我的測試,下面這種方案是最有效的:

  1. from airtest.core.api import connect_device

  2. device_1 = connect_device('android:///串號1')

  3. device_2 = connect_device('android:///串號2')

  4. device_3 = connect_device('android:///串號3')

當你這樣連接了3個手機以后,如果直接執(zhí)行 start_app,那么你會在 串號1對應的手機上啟動App。

此時如果你執(zhí)行下面的代碼,你會發(fā)現(xiàn)返回一個有3個元素的列表:

  1. >>> from airtest.core.api import G

  2. >>> G.DEVICE_LIST

  3. [<airtest.core.android.android.Android object at 0x118c55cc0>, <airtest.core.android.android.Android object at 0x118a4f550>, <airtest.core.android.android.Android object at 0x11b0ec358>]

這就是你當前連接的三個手機。如果你想控制第二個手機怎么辦呢?使用下面的命令:

  1. from airtest.core.api import set_current

  2. ?

  3. set_current(1)

  4. start_app('包名')

set_current(1)里面的1對應了列表下標為1的這個手機。也就是第二個加入的手機。

同理,當你想在第三個手機上啟動App時,你需要再切換為 set_current(2)

這種方式用起來確實比較麻煩,所以我一般會使用Poco的接口來直接操作每一個手機。所以此時需要把 device_1, device_2device_3作為參數(shù)傳入給 AndroidUiautomationPoco,代碼如下:

  1. from airtest.core.api import connect_device

  2. from poco.drivers.android.uiautomation import AndroidUiautomationPoco

  3. ?

  4. ?

  5. device_1 = connect_device('android:///串號1')

  6. device_2 = connect_device('android:///串號2')

  7. device_3 = connect_device('android:///串號3')

  8. ?

  9. poco_1 = AndroidUiautomationPoco(device_1, use_airtest_input=True, screenshot_each_action=False)

  10. poco_2 = AndroidUiautomationPoco(device_2, use_airtest_input=True, screenshot_each_action=False)

  11. poco_3 = AndroidUiautomationPoco(device_3, use_airtest_input=True, screenshot_each_action=False)

  12. ?

  13. poco_1(text='微信').click()

  14. poco_2(text='微信').click()

  15. poco_3(text='微信').click()

使用這種方式,就不需要來回切換,并且還可以使用多線程直接同時控制每一臺手機。

?

本文摘自 :https://blog.51cto.com/u

開通會員,享受整站包年服務立即開通 >