当前位置:   article > 正文

Java利用Appium实现获取Android手机型号_appium 获取设备信息 java

appium 获取设备信息 java

adb devices -l  获取手机型号

C:\Users\jeff.xie>adb devices -l
List of devices attached
9b2157cfaedb           device product:laurel_sprout model:Mi_A3 device:laurel_sprout transport_id:1

adb -d shell getprop ro.product.brand  获取手机厂商
C:\Users\jeff.xie>adb -d shell getprop ro.product.brand
Xiaomi

 

  1. package com.welab.automation.projects.demo;
  2. import io.appium.java_client.android.AndroidDriver;
  3. import io.appium.java_client.service.local.AppiumDriverLocalService;
  4. import io.appium.java_client.service.local.AppiumServiceBuilder;
  5. import lombok.SneakyThrows;
  6. import org.openqa.selenium.remote.DesiredCapabilities;
  7. import java.io.*;
  8. import java.net.URISyntaxException;
  9. import java.util.Optional;
  10. import java.util.concurrent.atomic.AtomicInteger;
  11. import static io.appium.java_client.service.local.flags.GeneralServerFlag.LOG_LEVEL;
  12. import static io.appium.java_client.service.local.flags.GeneralServerFlag.SESSION_OVERRIDE;
  13. public class GetPhoneTypeByAppium {
  14. public static final String WIN_DRIVER_PATH = "D:/Program Files/nodejs/node.exe";
  15. public static final String WIN_APPIUM_PATH = "C:/Users/jeff.xie/AppData/Roaming/npm/node_modules/appium/build/lib/main.js";
  16. public static final String MAC_DRIVER_PATH = "/usr/local/bin/node";
  17. public static final String MAC_APPIUM_PATH = "/usr/local/lib/node_modules/appium/build/lib/main.js";
  18. int width;
  19. int height;
  20. AndroidDriver driver;
  21. public static void main(String[] args) throws URISyntaxException, IOException, InterruptedException {
  22. GetPhoneTypeByAppium getPhoneTypeByAppium = new GetPhoneTypeByAppium();
  23. getPhoneTypeByAppium.startTest();
  24. }
  25. public DesiredCapabilities setAndroidDesiredCapabilities(){
  26. DesiredCapabilities devices = new DesiredCapabilities();
  27. devices.setCapability("platformName", "Android");
  28. //adb devices -l 获取手机deviceName和手机型号model
  29. //9f1829a8 device product:gemini model:MI_5 device:gemini transport_id:1
  30. devices.setCapability("deviceName","9f1829a8");
  31. //adb shell getprop ro.build.version.release
  32. devices.setCapability("platformVersion", "8.0.0");
  33. devices.setCapability("appPackage","com.android.settings");
  34. devices.setCapability("appActivity","com.android.settings.Settings");
  35. devices.setCapability("automation","uiautomator2");
  36. devices.setCapability("unicodeKeyboard", true);
  37. devices.setCapability("resetKeyboard",true);
  38. return devices;
  39. }
  40. public void getWindowWidthAbdHeight(){
  41. width = driver.manage().window().getSize().width;
  42. height = driver.manage().window().getSize().height;
  43. }
  44. @SneakyThrows
  45. public void startTest() throws URISyntaxException, IOException {
  46. //需要打开appium server,并启动模拟器
  47. //driver= new AndroidDriver(new URL("http://localhost:4723/wd/hub"),setAndroidDesiredCapabilities());
  48. //不需要打开appium桌面版
  49. AppiumDriverLocalService service ;
  50. if (isWindows()) {
  51. service =startAppiumService(WIN_DRIVER_PATH,WIN_APPIUM_PATH);
  52. } else {
  53. service =startAppiumService(MAC_DRIVER_PATH,MAC_APPIUM_PATH);
  54. }
  55. driver = new AndroidDriver(service.getUrl(), setAndroidDesiredCapabilities());
  56. Thread.sleep(5000);
  57. getAndroidPhoneType();
  58. Thread.sleep(1000);
  59. System.out.println("pass");
  60. }
  61. @SneakyThrows
  62. public String getAndroidPhoneType() throws URISyntaxException, IOException{
  63. String phoneType=null;
  64. String cmds = String.format("adb devices -l");
  65. System.out.println(cmds);
  66. Process pcs = Runtime.getRuntime().exec(cmds);
  67. pcs.waitFor();
  68. Thread.sleep(1000);
  69. BufferedInputStream in = new BufferedInputStream(pcs.getInputStream());// 字符流转换字节流
  70. BufferedReader br = new BufferedReader(new InputStreamReader(in));// 这里也可以输出文本日志
  71. String lineStr = null;
  72. while ((lineStr = br.readLine()) != null) {
  73. System.out.println(lineStr);
  74. if(lineStr.contains("model:")){
  75. int index = lineStr.indexOf("model:");
  76. String temp = lineStr.substring(index+"model:".length()).trim();
  77. phoneType = temp.split(" ")[0].trim();
  78. }
  79. }
  80. System.out.println("phoneType: "+phoneType);
  81. return phoneType;
  82. }
  83. public static boolean isWindows(){
  84. String osName = System.getProperty("os.name");
  85. if (osName.startsWith("Windows")) {
  86. return true;
  87. } else {
  88. return false;
  89. }
  90. }
  91. private static AppiumDriverLocalService startAppiumService(String driverPath, String appiumPath) {
  92. AtomicInteger port = new AtomicInteger();
  93. AppiumDriverLocalService service = null;
  94. service = new AppiumServiceBuilder()
  95. .usingAnyFreePort()
  96. .withIPAddress("0.0.0.0")
  97. .withArgument(SESSION_OVERRIDE)
  98. .withArgument(LOG_LEVEL, "error")
  99. .usingDriverExecutable(new File(driverPath))
  100. .withAppiumJS(new File(appiumPath))
  101. .build();
  102. Optional.ofNullable(service).ifPresent(s -> {
  103. s.start();
  104. port.set(s.getUrl().getPort());
  105. });
  106. AppiumDriverLocalService appiumDriverLocalService = service;
  107. return service;
  108. }
  109. }
package com.welab.automation.projects.demo;

import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.service.local.AppiumDriverLocalService;
import io.appium.java_client.service.local.AppiumServiceBuilder;
import lombok.SneakyThrows;
import org.openqa.selenium.remote.DesiredCapabilities;
import java.io.*;
import java.net.URISyntaxException;
import java.util.Optional;
import java.util.concurrent.atomic.AtomicInteger;
import static io.appium.java_client.service.local.flags.GeneralServerFlag.LOG_LEVEL;
import static io.appium.java_client.service.local.flags.GeneralServerFlag.SESSION_OVERRIDE;

public class GetPhoneTypeByAppium {
    public static final String WIN_DRIVER_PATH = "D:/Program Files/nodejs/node.exe";
    public static final String WIN_APPIUM_PATH = "C:/Users/jeff.xie/AppData/Roaming/npm/node_modules/appium/build/lib/main.js";
    public static final String MAC_DRIVER_PATH = "/usr/local/bin/node";
    public static final String MAC_APPIUM_PATH = "/usr/local/lib/node_modules/appium/build/lib/main.js";
    int width;
    int height;
    AndroidDriver driver;

    public static void main(String[] args) throws URISyntaxException, IOException, InterruptedException {
        GetPhoneTypeByAppium getPhoneTypeByAppium = new GetPhoneTypeByAppium();
        getPhoneTypeByAppium.startTest();
    }

    public DesiredCapabilities setAndroidDesiredCapabilities(){
        DesiredCapabilities devices  = new DesiredCapabilities();
        devices.setCapability("platformName", "Android");
        //adb devices -l   获取手机deviceName和手机型号model
        //9f1829a8               device product:gemini model:MI_5 device:gemini transport_id:1
        devices.setCapability("deviceName","9f1829a8");
        //adb shell getprop ro.build.version.release 获取手机版本号
        devices.setCapability("platformVersion", "8.0.0");
        devices.setCapability("appPackage","com.android.settings");
        devices.setCapability("appActivity","com.android.settings.Settings");
        devices.setCapability("automation","uiautomator2");
        devices.setCapability("unicodeKeyboard", true);
        devices.setCapability("resetKeyboard",true);
        return devices;
    }

    public void getWindowWidthAbdHeight(){
        width = driver.manage().window().getSize().width;
        height = driver.manage().window().getSize().height;
    }

    @SneakyThrows
    public void startTest()  throws URISyntaxException, IOException {
        //需要打开appium server,并启动模拟器
        //driver= new AndroidDriver(new URL("http://localhost:4723/wd/hub"),setAndroidDesiredCapabilities());

        //不需要打开appium桌面版
        AppiumDriverLocalService service ;
        if (isWindows()) {
            service =startAppiumService(WIN_DRIVER_PATH,WIN_APPIUM_PATH);
        } else {
            service =startAppiumService(MAC_DRIVER_PATH,MAC_APPIUM_PATH);
        }

        driver = new AndroidDriver(service.getUrl(), setAndroidDesiredCapabilities());
        Thread.sleep(5000);

        getAndroidPhoneType();

        Thread.sleep(1000);
        System.out.println("pass");

    }

    @SneakyThrows
    public String getAndroidPhoneType() throws URISyntaxException, IOException{
        String phoneType=null;
        String cmds = String.format("adb devices -l");
        System.out.println(cmds);
        Process pcs = Runtime.getRuntime().exec(cmds);
        pcs.waitFor();
        Thread.sleep(1000);

        BufferedInputStream in = new BufferedInputStream(pcs.getInputStream());// 字符流转换字节流
        BufferedReader br = new BufferedReader(new InputStreamReader(in));// 这里也可以输出文本日志
        String lineStr = null;
        while ((lineStr = br.readLine()) != null) {
            System.out.println(lineStr);
            if(lineStr.contains("model:")){
                int index = lineStr.indexOf("model:");
                String temp = lineStr.substring(index+"model:".length()).trim();
                phoneType = temp.split(" ")[0].trim();
            }
        }
        System.out.println("phoneType: "+phoneType);
        return phoneType;
    }

    public static boolean isWindows(){
        String osName = System.getProperty("os.name");
        if (osName.startsWith("Windows")) {
            return true;
        } else {
            return false;
        }
    }

    private static AppiumDriverLocalService startAppiumService(String driverPath, String appiumPath) {
        AtomicInteger port = new AtomicInteger();
        AppiumDriverLocalService service = null;
        service = new AppiumServiceBuilder()
                .usingAnyFreePort()
                .withIPAddress("0.0.0.0")
                .withArgument(SESSION_OVERRIDE)
                .withArgument(LOG_LEVEL, "error")
                .usingDriverExecutable(new File(driverPath))
                .withAppiumJS(new File(appiumPath))
                .build();
        Optional.ofNullable(service).ifPresent(s -> {
            s.start();
            port.set(s.getUrl().getPort());
        });
        AppiumDriverLocalService appiumDriverLocalService = service;
        return service;
    }

}
声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号