我在我的机器中配置了两个android设备。一个是真正的Android设备(ZX1D63R33N)[Moto G第二代 - 使用5.0.2 - API 21]和GenyMotion android模拟器[使用带有API 22的5.1.1]。
脚本在两个设备中成功执行。但我无法控制我应该执行哪个设备的执行。
考虑我先连接我的真实Android设备然后再启动Genymotion模拟器。然后adb设备将提供以下输出。
C:\Users\Ramkumar>adb devices
List of devices attached
ZX1D63R33N device
192.168.56.101:5555 device
我在我的脚本中设置了以下SelendoidCapabilities。
WebDriver driver; //AppiumDriver driver
//new SelendroidCapabilities.
SelendroidCapabilities selendroidCapabilities = SelendroidCapabilities.emulator(DeviceTargetPlatform.ANDROID22, "Android Emulator");
selendroidCapabilities.setEmulator(true);
selendroidCapabilities.setCapability("browserName", "Chrome");
selendroidCapabilities.setCapability("device", "Android");
selendroidCapabilities.setCapability("version", "5.1");
selendroidCapabilities.setCapability("deviceName", "192.168.56.101:5555");
selendroidCapabilities.setCapability("platformName", "Android");
//capabilities.setCapability("app", app.getAbsolutePath());
//capabilities.setCapability("appPackage","com.android.chrome");
driver = new SelendroidDriver(new URL("http://localhost:4723/wd/hub"), selendroidCapabilities);
driver.get("https:google.com");
Thread.sleep(20000);
driver.quit();
当我执行脚本时,它会在手机中执行。它会打开Chrome浏览器并打开谷歌页面。无论我将模拟器设置为true并使用emualtor创建了SelendroidCapabilities作为选项。
即使我关闭了我的GenyMotion emualtor并且连接了真正的Android设备,adb设备命令也只显示一个连接的真实设备。然后我也看到它在真正的Android设备中执行
C:\Users\Ramkumar>adb devices
List of devices attached
ZX1D63R33N device
反之亦然。如果我先启动一个真实的设备,然后再启动GenyMotion emualtor,那么adb device命令会将输出设为
C:\Users\Ramkumar>adb devices
List of devices attached
ZX1D63R33N device
192.168.56.101:5555 device
拥有以下SelendroidCapabilities并不是在真正的Android设备上运行脚本,而是在GenyMotion emualtor上运行。
SelendroidCapabilities selendroidCapabilities = SelendroidCapabilities.device(DeviceTargetPlatform.ANDROID22, "Android Emulator");
selendroidCapabilities.setEmulator(false);
请建议我是否缺少任何配置。 提前谢谢。
此致 Ramkumar
答案 0 :(得分:0)
1. Use this: SelendroidCapabilities caps = new SelendroidCapabilities();
in place of this:
SelendroidCapabilities selendroidCapabilities = SelendroidCapabilities.emulator(DeviceTargetPlatform.ANDROID22, "Android Emulator");
2. Use capability caps.setSerial(deviceId)
in place of
selendroidCapabilities.setCapability("deviceName", "192.168.56.101:5555");
deviceId与执行adb设备时获得的设备序列号相同,您可以通过此输出来控制执行测试的位置。
答案 1 :(得分:0)
最后,我能够执行特定于设备的运行。我在旧代码中只缺少的是我将设备设置为deviceName属性而不是udid。
onResume()
为此,我必须使用udid设置序列号。
C:\Users\Ramkumar>adb devices
List of devices attached
192.168.56.101:5555 device
ZX1D63R33N device
capabilities.setCapability(" udid"," ZX1D63R33N"); - 这是设置设备ID的属性。当我将值设置为ZX1D63R33N时,它在我的真实Android设备上运行,当设置为192.168.56.101:5555时,它在模拟器上执行。
当deviceName是必需的时,我尝试使用该值设置序列号。我们在deviceName中设置的值
并不重要谢谢!