zoukankan      html  css  js  c++  java
  • Java+appium+genymotion自动控制计算器或者浏览器

    控制计算器实现计算功能

    1、appium+jdk的安装

    参考文档:https://www.jianshu.com/p/1b959e0baae2

    2、     解决 adb版本冲突问题

       查看 genymotionadb版本

    进入:GenymobileGenymotion ools,输入adb version  

    Ø   选择一致使用的 sdk,也就是和 Android studioSDK一致

     

    ü   settings→adb→usecustom

     

    3、利用appium探测页面元素

    --》查看设备名称

       adb    devices

    --》   查看系统版本

     adb    shell    getprop    ro.build.version.release

    --》   查看 App 名称和 App 启动项名称

      adb    shell    dumpsys    window    w    |    findstr /   |   findstr name=

    --》appium设置

     

    {
      "deviceName": "192.168.231.101:5555",
      "platformName": "Android",
      "platformVersion": "9",
      "appPackage": "com.android.calculator2",
      "appActivity": "com.android.calculator2.Calculator",
      "noReset": true
    }

    --》探测

     4、编写程序

    public class TestGenymotion01 {
    
        private AndroidDriver driver;
        @Test
        public void test001() {
            //数字一
              String  numberA = "234";
             //数字二 
              String  numberB = "432";
              //运算符
              String  plus = "op_add"; 
              //等号
              String  equal = "eq";
              //包名:id
              String  package_id="com.android.calculator2:id/";
              for(int i=0;i<numberA.length();i++) {
                  driver.findElementById(package_id+"digit_"+numberA.charAt(i)).click();
              }      
              driver.findElementById(package_id+plus).click();  
              for(int i=0;i<numberB.length();i++) {
                  driver.findElementById(package_id+"digit_"+numberB.charAt(i)).click();
              }      
              driver.findElementById(package_id+equal).click();   
              String result=driver.findElementById(package_id+"result").getText();      
              System.out.println("结果=="+result);
              Assert.assertEquals(result, "666");
        }
    
        @BeforeClass
          public void beforeClass() {
             //创建DesiredCapabilities对象
              //指定测试设备信息
              DesiredCapabilities devices = new DesiredCapabilities();
              //使用的移动设备或模拟器的种类,如 iPhone Simulator,iPad Simulator,Android Emulator,Galaxy S4 等
              devices.setCapability("deviceName", "192.168.231.101:5555");
    //         指定使用哪个移动操作系统平台,如 iOS,Android 或 FirefoxOS
              devices.setCapability("platformName","Android");
         //指定移动操作系统版本
              devices.setCapability("platformVersion","9");
    //          指定 app 程序包名,即被测程序名
              devices.setCapability("appPackage","com.android.calculator2");
              devices.setCapability("appActivity","com.android.calculator2.Calculator");
            //A new session could not be created的解决方法
              devices.setCapability("appWaitActivity","com.android.calculator2.Calculator");
              //每次启动时覆盖session,否则第二次后运行会报错不能新建session
              devices.setCapability("sessionOverride", true);
              //启动 App
              try {
                driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"),devices);
            } catch (MalformedURLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }      
          }
    
          @AfterClass
          public void afterClass() {
              driver.quit();
          }
    
        }

    --》读取文件中的数据

    
    
    public class TestGenymotion02 {
    
        private AndroidDriver driver;
        
        @Test(dataProvider="getData")
        public void test001(String numberA,String operator,String numberB,String expected) {
            
         switch(operator) {
         case "+": operator="op_add";
             break;
         case "-": operator="op_sub";
             break;
         case "*": operator="op_mul";
             break;
         case "/": operator="op_div";
             break;
         default: operator="op_add";
             break;
            }    
              //等号
              String  equal = "eq";      
              //包名:id
              String  package_id="com.android.calculator2:id/";
              for(int i=0;i<numberA.length();i++) {
                  driver.findElementById(package_id+"digit_"+numberA.charAt(i)).click();
              }      
              driver.findElementById(package_id+operator).click();  
              for(int i=0;i<numberB.length();i++) {
                  driver.findElementById(package_id+"digit_"+numberB.charAt(i)).click();
              }      
              driver.findElementById(package_id+equal).click();   
              String result=driver.findElementById(package_id+"result").getText();      
              System.out.println("结果=="+result);
              Assert.assertEquals(result, expected);
    
        }
    
          @DataProvider
          public Object[][] getData() throws IOException{
             //读取文档中的测试数据
             List<String[]> rows = new ArrayList<String[]>();
             BufferedReader br = new BufferedReader(new FileReader("e:\cal.txt"));
             String len;
             while((len=br.readLine())!=null) {
                 String[] strs = len.split("	");
                 rows.add(strs);
             }
             br.close();
             Object[][] data = new Object[rows.size()][];         
             for(int i=0;i<rows.size();i++) {
                  data[i] = rows.get(i);
                 }
             
         return data;          
          }
          
        @BeforeClass
          public void beforeClass() {
             //创建DesiredCapabilities对象
              //指定测试设备信息
              DesiredCapabilities devices = new DesiredCapabilities();
              //使用的移动设备或模拟器的种类,如 iPhone Simulator,iPad Simulator,Android Emulator,Galaxy S4 等
              devices.setCapability("deviceName", "192.168.231.101:5555");
    //         指定使用哪个移动操作系统平台,如 iOS,Android 或 FirefoxOS
              devices.setCapability("platformName","Android");
         //指定移动操作系统版本
              devices.setCapability("platformVersion","9");
    //          指定 app 程序包名,即被测程序名
              devices.setCapability("appPackage","com.android.calculator2");
              devices.setCapability("appActivity","com.android.calculator2.Calculator");
            //A new session could not be created的解决方法
              devices.setCapability("appWaitActivity","com.android.calculator2.Calculator");
              //每次启动时覆盖session,否则第二次后运行会报错不能新建session
              devices.setCapability("sessionOverride", true);
              //启动 App
              try {
                driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"),devices);
            } catch (MalformedURLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }      
          }
    
          @AfterClass
          public void afterClass() {
              driver.quit();
          }
    
        
        }
    
    
    
    
    

    控制浏览器实现搜索

    1、genymotion设置联网

     

     

     

    2、查看控件名称

    --》查看设备名称

       adb    devices

    --》   查看系统版本

     adb    shell    getprop    ro.build.version.release

    --》   查看 App 名称和 App 启动项名称

      adb    shell    dumpsys    window    w    |    findstr /   |   findstr name=

     ---》appium设置同上

    {
      "deviceName": "192.168.231.101:5555",
      "platformName": "Android",
      "platformVersion": "9",
      "appPackage": "com.android.quicksearchbox",
      "appActivity": "com.android.quicksearchbox.SearchActivity",
      "noReset": true
    }

    --》抓取元素

     --》代码

    public class NewTest {
      AndroidDriver driver;
      
      @BeforeClass
      public void beforeClass() throws MalformedURLException {
          DesiredCapabilities device=new DesiredCapabilities();
          device.setCapability("deviceName", "192.168.231.101:5555");
          device.setCapability("platformName", "Android");
          device.setCapability("platformVersion", "9");
          device.setCapability("noReset", true);
          device.setCapability("appPackage", "com.android.quicksearchbox");
          device.setCapability("appActivity", "com.android.quicksearchbox.SearchActivity");
          device.setCapability("unicodeKeyboard", true);
          device.setCapability("resetKeyboard", true);
          driver=new AndroidDriver(new URL("http://localhost:4723/wd/hub"),device);
      }
      
      @Test
      public void test() throws Exception{
          driver.findElementById("com.android.quicksearchbox:id/search_src_text").sendKeys("www.baidu.com");
          driver.pressKeyCode(66);
          //Set<String> context=driver.getContextHandles();
          //System.out.println(context);
          Thread.sleep(3000);
          driver.findElementById("org.chromium.webview_shell:id/url_field").clear();
          Thread.sleep(3000);
          driver.findElementById("org.chromium.webview_shell:id/url_field").sendKeys("www.baidu.com");
          driver.pressKeyCode(66);
          Thread.sleep(3000);
          driver.findElementById("index-kw").click();
          driver.findElementById("index-kw").sendKeys("手机测试");
          driver.pressKeyCode(66);
          Thread.sleep(3000);
      }  
      
      @AfterClass
      public void afterClass() {
          driver.quit();
      }
    
    }
  • 相关阅读:
    iOS无限循环滚动scrollview
    SDWebImage实现原理(怎么实现图片缓存器)
    CocoaPods第三方库管理 iOS
    什么时候会报unrecognized selector的异常?
    iOS提交后申请加急审核
    iOS 个人账号 iOS APP Development 灰色不可选
    Xcode6 管理provisioning profile
    iOS苹果推送功能实现步骤
    蓝桥杯 幸运数
    hihocoder编程练习赛52-3 部门聚会
  • 原文地址:https://www.cnblogs.com/ychun/p/14333086.html
Copyright © 2011-2022 走看看