appium(三)appium-desktop的使用


  appium-desktop的作用:方便調試和查找頁面元素

1、首先啟動mumu模擬器,然后使用adb 連接到模擬器

2、啟動appium-desktop,先看看需要設置些什么東西

  (1)simple界面

  Host:Android設備的ip,若使用模擬器,使用默認的 0.0.0.0即可

  Port:端口使用默認的4723即可

如果是真機,Host 和 Port 不用填

  Edit Configurations:設置 ANDRODI_HOME 和 JAVA_HOME,如果已經配置了這兩個環境變量,這appium會自動讀取,建議先提前配置兩個環境變量

   (2)Advanced界面

  Logfile Path:設置appium的log路徑

  Log Level:設置log的等級,默認debug即可

  Local Timezone:時區設置,可看情況勾選

  Log Timestamps:日志顯示時間戳

  Supress Log Color:設置日志顏色,方便讀

設置好了后即可連接Android設備,start server(啟動服務),start inspector session(打開調試界面)

3、設置 desired capabilities

  常用的設置如下

{
"platformName": "Android",  //設備類型 Android 或 ios
"platformVersion": "6.0.1",  // Android 或 ios 版本
"deviceName": "127.0.0.1:7555",  //設備名稱,模擬器即為 ip,手機可使用 adb連接時的設備名稱,使用 adb devices可查看
"appPackage": "com.baidu.tieba",  //appPackage,下面會介紹獲取方法
"appActivity": ".tblauncher.MainTabActivity",  //appActivity,下面會介紹獲取方法
"noReset": true,  //不清除緩存
//unicodeKeyboard 和 resetKeyboard 設置Unicode鍵盤,讓腳本能夠輸入中文,成對使用,單獨使用會被ignore
"unicodeKeyboard":true,  
"resetKeyboard":true
}
連接設備必須的屬性 :platformName,platformVersion,deviceName,appPackage,appActivity

獲取 appPackage 和 appActivity 的方法:首先啟動對應的App,然后輸入命令 adb shell dumpsys activity |findStr "mFoc"

 前面的即為 appPackage ,后面的為 appActivity ,注意千萬別把 . 漏掉了

4、啟動 APP

  (1)啟動APP失敗

  1.出現下圖的錯誤時,不要使用 Automatic Server,使用 Custom Server 啟動

 

  2.有可能會有模擬器的adb和Android studio的adb版本不同而導致鏈接不上的情況,保證mumu模擬器ADB版本號與SDK的abd版本一致,將SDK的abd復制到mumu模擬器路徑下並修改文件名,替換原有文件

  (2)啟動后的界面可以 查找元素,按坐標滑動,按坐標點擊,錄制腳本 等功能,錄制腳本時會自動生成 代碼腳本,可選擇 Java,Python等,寫腳本時可以用來參考

5、元素定位 

  1. app的xml結構中的 attribute中的 content-desc 對應於元素定位時用到 accessibility id,定位使用 driver.findElement(MobileBy.AccessibilityId("請輸入QQ號碼或手機或郵箱"))

  2. app的xml結構中的 attribute中的 resource-id 對應於元素定位時用到的 id,定位使用 driver.findElement(By.id("com.tencent.mobileqq:id/login"))

  3. 依然可以使用xpath 的屬性定位,寫法和selenium的xpath的屬性定位相同

6、Java代碼

  需要先拉去jar 包:selenium,Java-client

  注意,使用 代碼啟動APP時,啟動appium-desktop的服務即可(start server),不要打開調試界面(start inspector session),防止沖突

    //使用appium-desktop啟動APP
    @Test
    public void appConnect() throws InterruptedException, MalformedURLException {
        //配置Capabilities參數
        DesiredCapabilities desiredCapabilities = new DesiredCapabilities();
        //設置必須的參數
        desiredCapabilities.setCapability("deviceName", "127.0.0.1:7555");
        desiredCapabilities.setCapability("platformName", "Android");
        desiredCapabilities.setCapability("platformVersion", "6.0.1");
        desiredCapabilities.setCapability("appPackage", "com.tencent.mobileqq");
        desiredCapabilities.setCapability("appActivity", ".activity.LoginActivity");
        //以下為可選參數
        //不要重置簽名
        desiredCapabilities.setCapability("noSign", true);
        //不清除緩存
        desiredCapabilities.setCapability("noReset", true);
        //設置使用unicode鍵盤,讓自動化腳本實現過程中能夠輸入中文,成對使用,單獨使用下面的某一個屬性會ignore
        desiredCapabilities.setCapability("unicodeKeyboard", true);
        desiredCapabilities.setCapability("resetKeyboard", true);
        //電腦連接了多個設備時,需要指定設備
        //desiredCapabilities.setCapability("udid","127.0.0.1:7555");

        //創建driver對象,URL參數是固定寫法,可參考appium-desktop的custom server的Remote Host,Remote Por,Remote Path
        AndroidDriver driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), desiredCapabilities);
        //啟動APP需要一定的時間,注意設置等待時間
        Thread.sleep(3000);
        //使用上面提到過的三種元素定位方式
        driver.findElement(MobileBy.AccessibilityId("請輸入QQ號碼或手機或郵箱")).sendKeys("123456");
        driver.findElement(By.xpath("//android.widget.EditText[@content-desc='密碼 安全']")).sendKeys("12456");
        driver.findElement(By.id("com.tencent.mobileqq:id/login")).click();

        Thread.sleep(10000);
        //關閉APP和driver
        driver.closeApp();
        driver.quit();
    }


免責聲明!

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



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