Appium基础五(appium相关API)

智者不为愚者谋,勇者不为怯者死。这篇文章主要讲述Appium基础五:appium相关API相关的知识,希望能为你提供帮助。
1.获取信息类:
  1.1 获取当前界面的组件:
          driver.currentActivity(); //获取当前界面的activity,可用于断言是否跳转到预期的activity 
  1.2 获取当前页面的树形结构源代码
          driver.pagesource();           //获取当前页面的树状结构图
2.App安装与卸载相关类API
  2.1 判断APP是否安装
      driver.isAppInstalled("package name");       //判断应用是否已安装
      driver.installApp(appPath);                             //安装APP 
      driver.removeApp(StringbundleId);                 //卸载包,android中是包名,ios是bundleId
      driver.closeApp();                                               //关闭应用,按住Home键把应用退到后台       
      driver.launchApp();                                             //启动应用
      driver.resetApp();                                               //先close再launch
  2.2 启动其他应用:
      driver.startActivity("com.android.camera", ".CameraLauncher");
3.设置相关类:
  3.1 获取和设置网络状态
      int status = driver.getNetworkConnection().value;   //获取网络状态
      System.out.println(status);
      driver.setNetworkConnection(new NetworkConnectionSetting(status));   //设置网络状态
      //或者
      driver.setNetworkConnection(new NetworkConnectionSetting(false, true, false));
4.文件操作类:
  4.1.push文件、pull文件
            File file = new File("d:\\test.txt"); //test.txt内容为"test"
                String content = null;
                try {
                          content = FileUtils.readFileToString(file);
                } catch (IOException e) {
                                  e.printStackTrace();
                }
【Appium基础五(appium相关API)】                                 
                byte[] data = https://www.songbingjia.com/android/Base64.encodeBase64(content.getBytes());
                driver.pushFile("sdcard/test.txt", data);                
                byte[] resultDate = driver.pullFile("sdcard/test.txt");
                System.out.println(new String(Base64.decodeBase64(resultDate))); //打印结果为"test"
5.获取控件类(获取多个元素只需要将findElement改成findElements即可):
  5.1通过元素id查找当前页面的目标元素:
        driver.findElementById("id");     //通过id定位元素
  5.2 通过元素name查找当前页面的目标元素:
        driver.findElementByClassName("classname"); //通过name定位元素
  5.3 通过元素Xpath查找当前页面的目标元素:
        driver.findElementByXpath("xpath");       //通过xpath定位元素
  5.4 通过元素的name值定位(也就是text)
        driver.findElementByName("name");           //通过text值定位
  5.5 混合定位,通过Xpath和index等联合定位
        driver.find_element_by_xpath("//android.widget.TextView[contains(@text,‘图库‘)]") //在页面检测所有的android.widget.TextView类中含有text="图库"的元素
6.用户操作类:
  6.1 点击事件:
          1)driver.click();
          2)driver.tap(position.duration);             //模拟手指点击,可设置按住时间长度(ms)
              如:driver.tap([(300,500)],10)
  6.2 摇一摇手机
          1)driver.shake()
  6.3 输入事件
          1)driver.elememt.sendKeys();
          2)driver.elememt.sendText();
  6.4 滑动屏幕(翻屏和快速移动):
          driver.swipe(startX,startY, endX,endY, during(ms)); //将屏屏幕从(startX,startY)滑动到(endX,endY)间隔during(ms)
          driver.flick(startX,startY,endX,endY)    //按住A(startX,startY)点快速移动到B(endX,endY)点
  6.5 缩放事件(适合测试类似有运动地图的场景):
          1)driver.pinch(element,percent,steps);                                             //在元素上执行缩小操作,percent和steps可不写,当不写时表示默认
              如:driver.pinch(element,150,30)
          2)driver.zoom(element,percent,steps);                                               //在元素上执行放大操作,percent和steps可不写,当不写时表示默认
              如:driver.zoom(element,200,50)
  6.6 长按事件:
          1)driver.longPress();
  6.7 Keyevent事件
          driver.keyevent("4")    #返回键操作
  6.8 打开和关闭操作:
          driver.close()      //关闭当前窗口
          driver.quit()        //退出脚本运行并关闭每个相关的窗口连接
  6.9 获取窗口的高和宽
          driver.manage().window().getSize().width;
          driver.manage().window().getSize().height;
7.等待Wait相关类;
  7.1 sleep方法:
          Thread.sleep(60000) 强制等待60s  //强制等待60s
  7.2 implicitlyWait方法
          driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);   //隐式等待,全局等待30S不管元素是u否已经加载
  7.3 WebDriverWait方法(显示等待,需增加一定等待时间,可通过WebDriverWait和util来决定)
  7.4 waitActivity方法(隐式等待,需接受三个参数,Activity名称、timeout超出时间和检测时间间隔(S)):
          driver.waitActivity("Activity",timeout(s),during(s));                  
8.AppiumDriver辅助类:
      8.1 截屏并保存本地
public static void ScreenShot(AndroidDriver driver,String ScreenName){
                      String dir_name = System.getProperty("user.dir")+"\\"+"异常图片";
                      if(!(new File(dir_name).isDirectory())){
                                        new File(dir_name).mkdir();
                                        }
              File screen = driver.getScreenshotAs(OutputType.FILE);
                      try{
                                        System.out.println("异常图片保存路径:"+new File(dir_name));
                                        FileUtils.copyFile(screen, new File(dir_name+"\\"+ScreenName+".jpg"));
                      }catch(Exception e){
                                        e.printStackTrace();
                      }

8.2 打开通知栏界面:
    driver.openNotifications();
      8.3 锁屏:
      driver.lockScreen(2); //锁屏
      //判断是否锁屏
      driver.isLocked();
      8.4 自动滑动列表
      driver.scrollTo("text");     //自动滑动列表
      //或者
      driver.scrollToExact("text");

    推荐阅读