zoukankan      html  css  js  c++  java
  • 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();

             }

                     

             byte[] data = 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");

  • 相关阅读:
    [五]SpringMvc学习-Restful风格实现
    [四]SpringMvc学习-对servlet与json的支持与实现
    [三]SpringMvc学习-封装、乱码问题、重定向、转发
    Android-aidl, binder,surfaceview
    linux memory dump--http://www.forensicswiki.org/wiki/Tools:Memory_Imaging
    Vanish/squid
    dongle --NFC
    词频统计 in office
    各种小巧的Hello World
    程序入口函数和glibc及C++全局构造和析构
  • 原文地址:https://www.cnblogs.com/wsy0202/p/11225818.html
Copyright © 2011-2022 走看看