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");


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM