1. 程式人生 > >android自動化測試--appium執行的坑問題及解決方法

android自動化測試--appium執行的坑問題及解決方法

問題

1. error: Failed to start an Appium session, err was: Error: Requested a new session but one was in progress

這裡寫圖片描述 
之前的會話沒有關閉,然後你又運行了測試例項,也沒有設定覆蓋. 
解決: 
1. 重新停止appium服務,開啟Appium服務 
2. 在Genarel Setting那裡設定覆蓋Session,重啟Appium

測試結束在AfterClass加driver.quit()

2. error: Failed to start an Appium session, err was: Error: Command failed: C:\Windows\system32\cmd.exe /s /c “D:\android-sdk-windows\platform-tools\adb.exe -s adb server version (32) doesn’t match this client (36); killing…

wait-for-device” 
error: could not install smartsocket listener: cannot bind to 127.0.0.1:5037:

這裡寫圖片描述

沒有連結上手機或者模擬器,請確認已經連線成功,重新連結

3. error: Android devices must be of API level 17 or higher. Please change your device to Selendroid or upgrade Android on your device.

這裡寫圖片描述

手機系統低於4.2,appium不支援4.2.2以下的系統,請換一個手機或者模擬器來測試。

4. Error: Permission to start activity denied.

這裡寫圖片描述 
**activity在清單檔案裡面沒新增Android:exported=”true”的話,你不能直接開啟對應的activity,需要從啟動頁activity開啟。 
exported屬性就是設定是否允許activity被其它程式呼叫**

5. error: Failed to start an Appium session, err was: Error: Activity used to start app doesn’t exist or cannot ve launched! Make usre it exists and is launchable activity

這裡寫圖片描述

要開啟的activity不存在,activity路徑錯誤,改為完整正確的activity路徑

6. error: Failed to start an Appium session, err was: Error: ‘java - version’ failed. Error: Command failed: C:\Windows\system32\cmd.exe /s /c “java -version”

這裡寫圖片描述 
Java版本錯誤,請安裝最新的版本

7.> info: [debug] Error: Command failed: C:\Windows\system32\cmd.exe /s /c “D:\android-sdk-windows\platform-tools\adb.exe -s 8806a0b0 shell “echo ‘ready‘“error: unknown host service

這裡寫圖片描述

連結手機失敗,重新連結手機即可,我就是重新拔插了一下usb

Error: Command failed: C:\Windows\system32\cmd.exe /s /c “D:\android-sdk-windows\platform-tools\adb.exe -s 8806a0b0 shell “echo ‘ping’”“

error: unknown host service

adb被突然佔用導致,例如你在執行用例的時候運行了模擬器。

8、error: Failed to start an Appium session, err was: Error: com.bj58.finance.agent/.LuncherActivity never started. Current: com.bj58.finance.agent/.NavigateActivity

次種情況常發生在app有引導頁時

解決方案:android初始化引數裡新增 desired_caps['waitappActivity'] = 'com.bj58.finance.agent.LuncherActivity'

ps:跟機子模擬器或機型有一定關係,目前沒有100%解決

技巧

1. 每次測試都重新安裝app

為capabilities色設定noReset為true 
capabilities.setCapability(“noReset”, true);

2. 中文亂碼

編碼問題,Android Studio修改檔案編碼的方法,最底部的UTf-8,點選選GBK就可以了,reload檔案。(ps: 先把檔案內容全選複製一下再轉換編碼,再貼上,不然檔案內容就變亂碼了) 
這裡寫圖片描述

3. 清除編輯框EditText內容

    /**
     * 逐字刪除編輯框中的文字
     * @param element 文字框架控制元件
     */
    public void clearText(AndroidElement element){
        String className = element.getClass().getSimpleName();
        if (className.equals("EditText")){
            String text = element.getText();
            //跳到最後
            driver.pressKeyCode(KEYCODE_MOVE_END);
            for (int i = 0; i < text.length(); i ++){
                //迴圈後退刪除
                driver.pressKeyCode(BACKSPACE);
            }
        }else {
            print("不是文字輸入框架,無法刪除文字");
        }

    }

4. 點選輸入法鍵盤的搜尋

方法1: 切換輸入法

利用adb命令先切換為自己的輸入法,按了搜尋再切換為appium的輸入法

檢視當前手機的輸入法

cmd執行下面的的程式碼

adb shell ime list -s

可以看到類似下面的結果,

C:\Users\LITP>adb shell ime list -s
com.baidu.input_mi/.ImeService
com.sohu.inputmethod.sogou.xiaomi/.SogouIME
io.appium.android.ime/.UnicodeIME

C:\Users\LITP>

執行adb命令

先寫好一個執行cmd的方法

    /**
     * 執行adb命令
     * @param s 要執行的命令
     */
    private void excuteAdbShell(String s) {
        Runtime runtime=Runtime.getRuntime();
        try{
            runtime.exec(s);
        }catch(Exception e){
            print("執行命令:"+s+"出錯");
        }
    }

在需要搜尋的時候執行下面的程式碼,切換的輸入法用自己檢視列表的輸入法內容,我這裡是搜狗輸入法

    //使用adb shell 切換輸入法-更改為搜狗拼音,這個看你本來用的什麼輸入法
    excuteAdbShell("adb shell ime set com.sohu.inputmethod.sogou.xiaomi/.SogouIME");
    //再次點選輸入框,調取鍵盤,軟鍵盤被成功調出
    clickView(page.getSearch());
    //點選右下角的搜尋,即ENTER鍵
    pressKeyCode(AndroidKeyCode.ENTER);
    //再次切回 輸入法鍵盤為Appium unicodeKeyboard
    excuteAdbShell("adb shell ime set io.appium.android.ime/.UnicodeIME");

相關推薦

Android自動化測試遇到的問題解決方法(1)

粘貼 png family 學習 再次 jmeter log 初始 mage 編者按:本文是小小小提姆在使用自動化測試工具TestWriter時的一點使用心得~我叫小小小提姆,是一名在IT行業的洪流中力爭上遊的軟件測試員,個人軟件測試擅長方向:1、功能測試(熟悉Fiddle

android自動化測試--appium執行問題解決方法

問題 1. error: Failed to start an Appium session, err was: Error: Requested a new session but one was in progress   之前的會話沒有關閉,然後你又運行了測試例項,也沒有設定覆蓋.  解決:  1.

Android開發過程中的解決方法收錄(四)

1.某個控制元件要放在Linearlayout佈局的底部(底部導航條) <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.

Android開發過程中的解決方法收錄

  1.某個控制元件要放在Linearlayout佈局的底部(底部導航條)      <LinearLayout      android:layout_width="match_parent"      android:orientation="vertical"      android:layou

Android開發過程中的解決方法收錄(五)

版本號 如果 出現 過程 androi 分享圖片 onf blog end 1. 導入依賴庫出現錯誤 因為使用的sdk版本不同,使用下列代碼強制使用最低版本,25.3.1就是我當前使用的版本號,根據自己的情況修改 configurations.all {

安裝Android Studio遇到的那些解決辦法

Google基於Intellij開發了Android Studio,而且現在已經開通了Android中國開發者網站,從該網站上就可以下載到官方版本的Android Studio。從Google的這一系列做法上可以看出,Google對於中國市場和中國開發者越來越重視。這對於開發者來說,當然是一件很好的事情,工作

Monkey測試手機BUG重現解決方法

一次 重新開始 ive system androi 測試工具 jar 子郵件 anr 1.1 Monkey測試簡介 Monkey測試是Android平臺自動化測試的一種手段,通過Monkey程序模擬用戶觸摸屏幕、滑動Trackball、按鍵等操作來對設備上的程序進行壓

java學習過程中遇到的解決方法

param bsp exception log 導入 學習 query data zha 1、 Table ‘my_data_base.gjp_zhangwu‘ doesn‘t exist Query: select * from gjp_zhangwu Parameter

學習Android過程中遇到的問題解決方法——網路請求

在學習Android的網路連線時遇到崩潰或IOException異常(出現的問題就這兩個,但是不穩定)的問題,先上程式碼,看看哪裡錯了(答案在文末) activity_main.xml: 1 <?xml version="1.0" encoding="utf-8"?> 2 <

學習Android過程中遇到的問題解決方法——電話監聽

也許有時你會有這樣一個需求:通電話時有一個重要的事需要記下來或者和一個陌生人特別是大騙子通話時,這是就想如果能把通話錄下來就方便多了。(這才是我寫這個程式碼的目的!!!) 在此過程中,犯了一個很大的錯誤。對電話狀態還不熟悉就開始程式設計,使得我就算編寫正確也出現各種bug。 先將程式碼列出來,供大家參考,

8.4.2 時間序列預測——使用TFLearn自定義模型——程式碼執行錯誤解決方法

《TensorFlow》:實戰Google深度學習框架中第八章的——8.4.2 時間序列預測——使用TFLearn自定義模型下的原始碼執行報錯: 原因分析: score=metrics.accuracy_score(y_test,y_predicted)該句程式碼中y_predi

SpringBoot2.x專案部署遇到的一些解決方法

1.環境 專案是SpringBoot2.x,部署的tomcat版本略低為8.0 2.問題 (1)首先打war包,這裡遇到了最痛苦的坑。首先打war包的話我有一篇部落格已經寫了,可以自行檢視。打war如果用maven的話就是先maven clean然後再maven ins

Android開發中遇到的錯誤解決方法(1)

(1)Android APK安裝後不在桌面生成快捷方式圖示  大家知道在Android系統的手機安裝APK應用後會在桌面上生成此APK的快捷方式,使用者通過直接點選可以進入此應用程式。但作為開發人員,我們有時候並不希望在安裝APK完成後生成快捷方式,而是通過先進入某個應用程

Mac OS X下搭建Android Source編譯環境的問題解決方法

[轉發請註明出處,謝謝] 本文的編譯環境指的是Android Kernel,Framework的編譯,不是Application的開發環境。 有詳細說明的只給出連結和要點提示。 大的步驟就是Android的source網站的原文 “Initializing a Buil

iOS11遇到的解決方法

1、iOS 11之前的導航欄的高度是64px(狀態條+導航欄),iOS11之後如果設定了prefersLargeTitles = YES(預設NO)則為96pt。所以一般不用管。 2、在iOS 11上執行tableView向下偏移64px或者20px,因為iOS 11廢

appium執行各種爹報錯問題解決方法

1. error: Failed to start an Appium session, err was: Error: Requested a new session but one was in progress 之前的會話沒有關閉,然後你又運行了測試例項,也沒有設定覆蓋. 解決: 1. 重新停止appi

自動化測試工具TW報錯解決方法

ima -1 需要 1.2 使用 policy 報錯 span 技術 自動化測試工具TestWriter使用時遇到的環境配置問題及解決方法如下,歡迎大家一起溝通交流~ 1.1 TW環境 1.1.1 Agent無法連接至服務器 1) 如果Agent與服務端不在一個網段,需要

在Mac OSX 上配置Appium+Android自動化測試環境

crm get exp 一個 shang time 點擊 host 設置代理 前提準備 開始正文之前,你需要準備好一些基本條件: 安裝好Mac OSX 操作系統的設備 能夠訪問中國局域網以外資源的方法(沒有也行,但很痛苦) 已經安裝好 homebrew 已經安裝好 Pyt

Android 8.0 的部分對應解決方法

channel 資料 兼容 androi adb install 只需要 方法 tps 雖然 Android 9.0 都已經面世了,本篇文章寫的有點遲了。 但是遲到好過不到,因此基於此這邊還是記錄一下項目中遇到的 Android 8.0 的坑及對應解決方法。 每次系統

Appium自動化測試-同時執行多個裝置

在之前的文章中,學習了Appium的基本使用,可以參考Appium自動化測試-入門,我們接著學習一下在一臺電腦中同時執行多裝置的方法,這樣在測試多種裝置的時候,可以直接在本地完成。 一、啟動Appium 一個Appium伺服器只能連線一個測試裝置進行測試,如果要在一臺電腦上同時測