• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

yxchun

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

Java+appium+genymotion自动控制计算器或者浏览器

控制计算器实现计算功能

1、appium+jdk的安装

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

2、     解决 adb版本冲突问题

   查看 genymotion的 adb版本

进入:\Genymobile\Genymotion\tools,输入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("\t");
             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();
  }

}

posted on 2021-01-27 10:46  yxchun  阅读(246)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3