AirtestProject / Poco

A cross-engine test automation framework based on UI inspection
http://airtest.netease.com/
Apache License 2.0
1.75k stars 315 forks source link

是否可以同时测试两个window应用 #162

Open kongguliu opened 5 years ago

kongguliu commented 5 years ago

你遇到了什么我们这个库解决不了的问题? IDE 连接上了两个unity开发出来的window应用,但是如果使用poco的话,UI树也只能显示一个应用的UI树,另一个应用的UI树会找不到

描述一下你想如何解决这个问题 多个poco窗口?还是将当前UI树切换到另一个应用的UI树?

额外信息 按照如下代码的话,不选择任何窗口,UI树不显示任何应用的UI树,poco1能运行,但是到poco2的话就找不到对应的UI节点 image

magicedy commented 5 years ago

可以的,我在用u3d的pc编辑器都没问题,win应用只有一个窗口应该更简单,多设备(应用l协作主要还要用到set_current去设置当前要控制哪个device,可能还会遇到的问题是1.pc上set_current后还要device().set_foreground()把应用设为前台显示,2.connect_device在win上使用,如果不是通过handle的话,G.DEVICE_LIST不会按预期增加多个device,一直在覆盖掉之前的,因为是通过dev.uuid(handlerl)去判断的

kongguliu commented 5 years ago

device().set_foreground()

可以的,我在用u3d的pc编辑器都没问题,win应用只有一个窗口应该更简单,多设备(应用l协作主要还要用到set_current去设置当前要控制哪个device,可能还会遇到的问题是1.pc上set_current后还要device().set_foreground()把应用设为前台显示,2.connect_device在win上使用,如果不是通过handle的话,G.DEVICE_LIST不会按预期增加多个device,一直在覆盖掉之前的,因为是通过dev.uuid(handlerl)去判断的

按照我发的图的话,把被测应用放置窗口最前,是用这一句:device.set_forground()还是:dev1.set_foreground()

magicedy commented 5 years ago

set_current()就是把G.DEVICE设为指定的device,device()就是返回G.DEVICE,而且还有其它地方还会用到device()即G.DEVICE,所以每次操作前直接先调set_current()再调device().set_foreground()就好

kongguliu commented 5 years ago

set_current()就是把G.DEVICE设为指定的device,device()就是返回G.DEVICE,而且还有其它地方还会用到device()即G.DEVICE,所以每次操作前直接先调set_current()再调device().set_foreground()就好

我现在只是测试单个应用,但是用device().set_foreground()并不会把被测应用置于窗口最前

kongguliu commented 5 years ago

set_current()就是把G.DEVICE设为指定的device,device()就是返回G.DEVICE,而且还有其它地方还会用到device()即G.DEVICE,所以每次操作前直接先调set_current()再调device().set_foreground()就好

在测试另一个应用的时候,不用device().set_foreground(),被测应用也会自动跳到窗口最前