自動遍歷工具 UICrawler 使用記錄

一 使用目的

該工具主要是基于appium,可以面向Android和Ios移動App,或H5或微信等應(yīng)用的,基于元素識別的UI自動化遍歷測試.
該工具特點:
1.支持最新的appium 1.8.1 (AppCrawler支持1.7.0)
2.安卓方向支持monkey配置遍歷.
3.結(jié)果報告上看,支持Crash信息搜集.會對操作過程錄制視頻.會對操作過程每動作截圖.
其他優(yōu)質(zhì)特性詳見github主頁說明

二 資源索引

官方資源

UICrawler Github
UICrawler 配置文件說明
UICrawler 環(huán)境配置說明

博客相關(guān)

基于 Appium 的 App UI 遍歷工具 (支持操作步驟回放)
網(wǎng)盤下載鏈接

三 環(huán)境準(zhǔn)備

以安卓方向取重點:

Oracle Java部署

下載地址 http://www.oracle.com/technetwork/java/javase/downloads/index.html
找到合適的java版本下載,我選擇的是jdk-8u91-windows-x64.exe。按步驟安裝即可。安裝路徑一般默認。

配置java 環(huán)境變量:
JAVA_HOME 變量值為JDK的安裝目錄,筆者為C:\Program Files\Java\jdk1.8.0_91
PATH PATH變量值后追加 ;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
CLASSPATH 變量值為 ;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;

檢查是否安裝成功

C:\Users\cmd>java -version
java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b15)
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b15, mixed mode)

Android sdk部署

下載地址 android-sdk_r24.4.1-windows 處下載 android-sdk_r24.4.1-windows.zip
將android-sdk-windows解壓到你需要的目錄下,筆者是D:\Android\android-sdk-windows

配置android-sdk環(huán)境變量:
ANDROID_HOME 變量值為android-sdk的解壓目錄,筆者為D:\Android\android-sdk-windows
PATH PATH變量值的最后追加 ;%ANDROID_HOME%\tools;%ANDROID_HOME%\platform-tools;%ANDROID_HOME%\build-tools;

接下來你便可以用D:\Android\android-sdk-windows 下的SDK Manager.exe下載配置SDK 或AVD Manager.exe 配置 AVD模擬器了。
如果你需要測試android應(yīng)用的話,請先安裝配置好某一版本的SDK及其相關(guān)工具。
如下圖,SDK manager必要配置:
Tools->Options設(shè)置:
[圖片上傳失敗...(image-3294ca-1528341709166)]
其它要下載的:
我目前的配置是
[圖片上傳失敗...(image-9ac803-1528341709166)]
此處的按需選擇與AVD模擬器配套使用的:
[圖片上傳失敗...(image-8bf55c-1528341709166)]
[圖片上傳失敗...(image-585a9a-1528341709166)]

#檢查下最終的adb版本
C:\Users\cmd>adb version
Android Debug Bridge version 1.0.39
Version 0.0.1-4500957
Installed as D:\Android\android-sdk-windows\platform-tools\adb.exe

appium部署

可以用兩種方式:
       一種就是直接用desktop版本, [appium-desktop](https://github.com/appium/appium-desktop/releases/tag/v1.6.1)
       一種就是nodejs部署參考,[教您完美 win10 安裝 Appium1.7.2 支持 win 客戶端自動化](https://testerhome.com/topics/12988)
       (建議使用nodejs部署方式,該文可以完美安裝當(dāng)然你不做winuiauto的話可以忽略文中提到的那些winuiauto相關(guān)的報錯)

手機真機相關(guān)設(shè)置

真機小米Mix2
需要開啟真機開發(fā)者選項->USB調(diào)試,模式和其他相關(guān),主要是調(diào)試這一欄要打開的有



哦,還有就是接上手機的時候,小米Mix會提示選擇"USB用途" (有 1 僅限充電 2 傳輸文件MTP 3傳輸照片 PTP) 你需要選擇 傳輸文件MTP 該項.否則 adb devices -l會報一個類似權(quán)限未獲取到的提示.

部署UICrawler相關(guān)

目前尚未完全開源,可以直接去網(wǎng)盤下載UICrawler-2.0.jar和config.yml 到本地磁盤即可.
我是先 git clone https://github.com/lgxqf/UICrawler.git 然后將上述下載的文件放入.

先通過自帶的-h 命令檢查UICrawler-2.0 是否正常

D:\UICrawler>java -jar UICrawler-2.0.jar -h
15:32:08.083 [main] INFO  Crawler -     -h  Print this usage information
    -a  Android package's main activity
    -b  iOS bundle id
    -c  Maximum click count
    -f  Yaml config  file
    -m  run monkey
    -p  Android package name
    -t  Appium port
    -u  Device serial
    -w  wda port for ios

四 配置修改

config.yml 用文本編輯器打開,個人推薦win環(huán)境用Notepad++,ubuntu環(huán)境用Notepadqq.
并且打開"顯示所有字符",以便查看是否符合yml文件編輯格式規(guī)范,空格 回車換行符什么的.

配置參考:
YAML 語言格式
XPath 教程

附上最終修改后配置:

GENERAL:
  #截屏數(shù)量
  SCREENSHOT_COUNT: 500
  #Crash時截圖顯示步驟數(shù)量
  CRASH_PIC_COUNT: 5
  #遍歷深度
  MAX_DEPTH: 2000
  #點擊次數(shù)
  MAX_CLICK_COUNT: 100000
  #TIME
  DEFAULT_WAIT_SEC: 10
  #查找元素的間隔時間
  DEFAULT_POLLING_INTERVAL_SEC: 5


DEFAULT_VALUE:
  #Appium server IP, 0.0.0.0代表Server在本地
  APPIUM_SERVER_IP: 0.0.0.0
  #Appium端口
  PORT: 4723
  #IOS 才會用到WDA_PORT
  IOS_WDA_PORT: 8001
  #是否忽略Crash,設(shè)為true時,crash后會重啟app然后繼續(xù)遍歷
  IGNORE_CRASH: true
  ENABLE_VERTICAL_SWIPE: true

#設(shè)置事件百分比 各事件百分比之和為100
MONKEY:
  #運行時間,以分鐘計
  MONKEY_RUNNING_TIME:  180
  #以下各項值總和需為100
  #滑動事件百分比
  SWIPE_RATIO: 10
  #點擊事件百分比
  CLICK_RATIO: 80
  #點擊MONKEY_SPECIAL_POINT_LIST中的坐標(biāo) 主要用于觸發(fā)"返回"功能
  CLICK_SPECIAL_POINT_RATIO: 10
  #重啟APP事件百分比
  RESTART_APP_RATIO: 0
  #特殊坐標(biāo)長按(10秒)
  LONG_PRESS_RATIO: 0
  #Android Only按Home鍵事件百分比
  HOME_KEY_RATIO: 0

#Gesture http://www.lxweimin.com/p/095e81f21e07
  DOUBLE_TAP_RATIO: 0
  PINCH_RATIO: 0
  UNPINCH_RATIO: 0

MONKEY_LIST:
  #提高測試效率,點擊以下點(x,y)時會觸發(fā)"后退"操作,避免在一個頁面停留時間太久
  MONKEY_SPECIAL_POINT_LIST:
  - '80,160'

  #根據(jù)以下坐標(biāo)長按10秒
  LONG_PRESS_LIST:
  - '980,560'

  #設(shè)置不點擊的區(qū)域, radius用來設(shè)置以下列坐標(biāo)為圓心,不想點擊的半徑區(qū)域
  MONKEY_BLACKLIST_POINT_LIST:
  - 'radius,10'
  - '0,0'


#小程序
MINI_PROGRAM:
  MINI_PROGRAM_NAME: 學(xué)而思營業(yè)廳
  MINI_PROGRAM_PROCESS: com.tencent.mm:appbrand1

#以下的內(nèi)容很關(guān)鍵,而且需要根據(jù)不同的APP定制
CRITICAL_ELEMENT:
  #Android 包名和啟動的Activity
  ANDROID_PACKAGE: com.***.***
  ANDROID_MAIN_ACTIVITY: .Loading

  #IOS Bundle ID com.apple.mobilesafari
  IOS_BUNDLE_ID: com.tencent.xin
  #手機桌面上顯示的APP的名字
  IOS_BUNDLE_NAME: 微信
  #IPA名字的前綴
  IOS_IPA_NAME: wechat


#構(gòu)建XPATH需要的一些內(nèi)容
  #UI底部TabBar
  ANDROID_BOTTOM_TAB_BAR_ID: com.***.***:id/mainTabLayout
  IOS_BOTTOM_TAB_BAR_TYPE: XCUIElementTypeTabBar

  #注意屬性值要加引號''
  ANDROID_CLICK_XPATH_HEADER: "http://*[contains(name(), 'Text') and string-length(@text)<10] | //*[contains(name(), 'Image')] | //*[contains(name(), 'Button')]"
  IOS_CLICK_XPATH_HEADER: '@visible="true" and string-length(@value)<30'

  #注意屬性值要加雙引號""
  ANDROID_USERNAME:
    XPATH: '//*[@resource-id="com.***.***:id/account_num"]'
    ACTION: input
    VALUE: '137*********'
  ANDROID_PASSWORD:
    XPATH: '//*[@resource-id="com.***.***:id/pwd"]'
    ACTION: input
    VALUE: 'password123'
  ANDROID_LOGIN_BUTTON:
    XPATH: '//*[@resource-id="com.***.***:id/loginbtn"]'
    ACTION: click

  #IOS LOGIN_ELEMENT
  IOS_USERNAME:
    XPATH: '//*[@type="XCUIElementTypeTextField"]'
    ACTION: input
    VALUE: '130xxxxx456'
  IOS_PASSWORD:
    XPATH: '//*[@type="XCUIElementTypeSecureTextField" and @value="請輸入登錄密碼"]'
    ACTION: input
    VALUE: '111111'
  IOS_LOGIN_BUTTON:
    XPATH: '//*[@type="XCUIElementTypeButton" and @name="登錄" and @label="登錄"]'
    ACTION: click


LIST:
  #待輸入文件本的控制類型
  INPUT_CLASS_LIST:
  - android.widget.TextView
  - XCUIElementTypeTextField
  - XCUIElementTypeSecureTextField

  #待輸入的文本
  INPUT_TEXT_LIST:
  - '123'
  - 'ABC'

  #當(dāng)發(fā)現(xiàn)App跳轉(zhuǎn)到一下app時 會觸發(fā)back鍵
  PRESS_BACK_KEY_PACKAGE_LIST:
  - 高德地圖
  - com.autonavi.minimap
  - com.android.settings

  #除了APP本身的包名外 根據(jù)以下包名判斷是否跳出了APP.android當(dāng)app跳轉(zhuǎn)到以下app時被認為是合法,會繼續(xù)遍歷操作.
  ANDROID_VALID_PACKAGE_LIST:
  - com.miui.securitycenter
  - com.android.server.telecom
  - com.lbe.security.miui
  - gallery
  - packageinstaller

  #ios 當(dāng)app跳轉(zhuǎn)到以下app時被認為是合法,會繼續(xù)遍歷操作
  IOS_VALID_BUNDLE_LIST:
  - 照片

  #白名單
  ITEM_WHITE_LIST:
  - 確定
  - 允許
  - 退出
  - 取消
  - 已解決

  #不點擊包含以下文本的控件
  ITEM_BLACKLIST:
  - 客服
  - 電話
  - 不允許
  - 拒絕
  - 拍照
  - 禁止
  - 呼叫
  - 低電量模式
  - 關(guān)閉


  #以下類型的元素及子元素不會被點擊
  IOS_EXCLUDE_BAR:
  #手機狀態(tài)欄
  - XCUIElementTypeStatusBar
  #鍵盤
  - XCUIElementTypeKeyboard

  #iOS不點擊以下類型的元素
  IOS_EXCLUDE_TYPE:
  - XCUIElementTypeOther
  - XCUIElementTypeKey
  - XCUIElementTypeWindow
  - XCUIElementTypeApplication

  #android中不點擊以下類型的元素
  ANDROID_EXCLUDE_TYPE:
  - android.widget.FrameLayout
#  - android.widget.ImageButton


  NODE_NAME_EXCLUDE_LIST:
  - selected
  - instance
  - checked
  - naf
  - content

  STRUCTURE_NODE_NAME_EXCLUDE_LIST:
  #iOS
  #- value
  - name

  #Android
  - text

修改的地方并不多,大家可以用diff比較工具和原版的config.yml比較.
重點說一下這段配置:
原配置如下,含義既是遇到文本元素且<30的都點擊

  #注意屬性值要加引號''
  ANDROID_CLICK_XPATH_HEADER: 'string-length(@text)<30'
  IOS_CLICK_XPATH_HEADER: '@visible="true" and string-length(@value)<30'

該段不支持如下寫,比如我想如下寫,可以跑起來,但拼接出來的"clickable elements xpath:"比較怪異且最后腳本端會報錯停止,咨詢后發(fā)現(xiàn)作者并不打算支持如下寫法.

  #注意屬性值要加引號''
  ANDROID_CLICK_XPATH_HEADER:
    - "http://*[contains(name(), 'Text') and string-length(@text)<10]"
    - "http://*[contains(name(), 'Image')]"
    - "http://*[contains(name(), 'Button')]"
  IOS_CLICK_XPATH_HEADER: '@visible="true" and string-length(@value)<30'

最終查了下xpath語法知識,可以用 | 或來連接多個并列屬性,這樣跑不會報錯且正常.這樣就可以點擊文本長度大于3小于10,和點擊所有圖片和Button元素.

  #注意屬性值要加引號''
  ANDROID_CLICK_XPATH_HEADER: "http://*[contains(name(), 'Text') and string-length(@text)>3 and string-length(@text)<10] | //*[contains(name(), 'Image')] | //*[contains(name(), 'Button')]"
  IOS_CLICK_XPATH_HEADER: '@visible="true" and string-length(@value)<30'

五 執(zhí)行

先通過adb命令檢查小米Mix2真機是否連接正常,且確認真機開發(fā)者選項相關(guān)開啟.

C:\Users\cmd>adb devices -l
List of devices attached
yourSerialNo          device product:chiron model:MIX_2 device:chiron

啟動appium server

C:\Users\cmd>appium --session-override

切到UICrawler-2.0.jar目錄下執(zhí)行即可.

D:\UICrawler>java -jar UICrawler-2.0.jar -f config.yml -u yourSerialNo

PS:
注意首次運行自動化腳本時候會向手機安裝的相關(guān)有:
Unlock
Appium Android Input Manager
Appium Settings
io.appium.uiautomator2.Server.test
io.appium.uiautomator2.Server


image.png

六 執(zhí)行結(jié)果

會按SerialNo+日期時間生成結(jié)果目錄:


圖片.png

報告如圖:


圖片.png

以上配置和jar包在win10和ubuntu18.04均測試正常通過.

其他配置項繼續(xù)測試中...

七 運行UICrawler Monkey

截取部分相關(guān)說明,熟悉基本原生monkey的便可明白,下述配置既是指只運行點擊事件的配置.

#設(shè)置事件百分比 各事件百分比之和為100
MONKEY:
  #運行時間,以分鐘計
  MONKEY_RUNNING_TIME:  180
  #以下各項值總和需為100
  #滑動事件百分比
  SWIPE_RATIO: 0
  #點擊事件百分比
  CLICK_RATIO: 100
  #點擊MONKEY_SPECIAL_POINT_LIST中的坐標(biāo) 主要用于觸發(fā)"返回"功能
  CLICK_SPECIAL_POINT_RATIO: 0
  #重啟APP事件百分比
  RESTART_APP_RATIO: 0
  #對應(yīng) LONG_PRESS_LIST:特殊坐標(biāo)長按(10秒)
  LONG_PRESS_RATIO: 0
  #Android Only按Home鍵事件百分比
  HOME_KEY_RATIO: 0

#Gesture http://www.lxweimin.com/p/095e81f21e07
  DOUBLE_TAP_RATIO: 0
  PINCH_RATIO: 0
  UNPINCH_RATIO: 0

MONKEY_LIST:
  #提高測試效率,點擊以下點(x,y)時會觸發(fā)"后退"操作,避免在一個頁面停留時間太久
  MONKEY_SPECIAL_POINT_LIST:
  - '70,140'

  #根據(jù)以下坐標(biāo)長按10秒
  LONG_PRESS_LIST:
  - '980,560'

  #設(shè)置不點擊的區(qū)域, radius用來設(shè)置以下列坐標(biāo)為圓心,不想點擊的半徑區(qū)域
  #MONKEY_BLACKLIST_POINT_LIST:
  #- 'radius,10'
  #- '0,0'

啟動appium server

C:\Users\cmd>appium --session-override

傳參-m 即可運行配置中的monkey相關(guān)設(shè)置

java -jar UICrawler-2.0.jar -f config.yml -u yourSerialNo -m

Tips

作者調(diào)起的是非原生monkey,所以當(dāng)你發(fā)現(xiàn)無法正常關(guān)掉UICrawler Monkey,一直在手機中繼續(xù)跑點擊的時候,使用

# Linux下
adb shell ps |grep monkey
# windows cmd下
adb shell ps | findstr monkey 
# 或
adb sehll ps | find "monkey"    找到返回的進程號
#然后 kill掉該手機內(nèi)原生monkey進程
adb shell kill [剛才查到的進程號] 

# 如windows下 原生monkey類似com.android.commands.monkey:
adb shell ps| findstr monkey
USER      PID   PPID  VSIZE  RSS   WCHAN              PC  NAME
shell     13846 1032  2073652 51480 futex_wait 7f900d7ef0 S com.android.commands.monkey

是找不到該進程,也甭想kill掉的, 我們可以 ps -ef|grep UICrawler 相關(guān)結(jié)束掉本機腳本端的那個java進程也就是 . "java -jar UICrawler-2.0.jar -f config.yml -u yourSerialNo -m" 該進程

monkey配置部分說明1

關(guān)于坐標(biāo)查看,可以打開開發(fā)者選項,"輸入"該節(jié)下的 "指針位置".這樣就可以看到坐標(biāo)系了.

MONKEY_LIST:
  #提高測試效率,點擊以下點(x,y)時會觸發(fā)"后退"操作,避免在一個頁面停留時間太久
  MONKEY_SPECIAL_POINT_LIST:
  - '80,160'

  #設(shè)置不點擊的區(qū)域, radius用來設(shè)置以下列坐標(biāo)為圓心,不想點擊的半徑區(qū)域
  MONKEY_BLACKLIST_POINT_LIST:
  - 'radius,10'
  - '0,0'

第一個坐標(biāo)'80,160',是左上的一般安卓app里的"返回"區(qū)域,

第二個坐標(biāo) - 'radius,10' - '0,0' ,這里 0,0 的話 應(yīng)該不就是app界面左上區(qū)域起始點, 然后 x y偏移10 畫個圓 ,不又是一般安卓app里的 "返回"區(qū)域?
這樣 這兩個 第1個 和 第3個不就沖突了?
這時如果,第1和2沖突時,以2為準(zhǔn) . 即以上效果為不點擊左上那個區(qū)域, 也就是一般的app返回區(qū)域.

monkey配置部分說明2

#設(shè)置事件百分比 各事件百分比之和為100
MONKEY:
  #運行時間,以分鐘計
  MONKEY_RUNNING_TIME:  180
  #以下各項值總和需為100
  #滑動事件百分比
  SWIPE_RATIO: 10
  #點擊事件百分比
  CLICK_RATIO: 80
  #點擊MONKEY_SPECIAL_POINT_LIST中的坐標(biāo) 主要用于觸發(fā)"返回"功能
  CLICK_SPECIAL_POINT_RATIO: 10
  #重啟APP事件百分比
  RESTART_APP_RATIO: 0
  #對應(yīng) LONG_PRESS_LIST:特殊坐標(biāo)長按(10秒)
  LONG_PRESS_RATIO: 0
  #Android Only按Home鍵事件百分比
  HOME_KEY_RATIO: 0

#Gesture http://www.lxweimin.com/p/095e81f21e07
  DOUBLE_TAP_RATIO: 0
  PINCH_RATIO: 0
  UNPINCH_RATIO: 0

MONKEY_LIST:
  #提高測試效率,點擊以下點(x,y)時會觸發(fā)"后退"操作,避免在一個頁面停留時間太久
  MONKEY_SPECIAL_POINT_LIST:
  - '70,140'

  #根據(jù)以下坐標(biāo)長按10秒
  LONG_PRESS_LIST:
  - '980,560'

  #設(shè)置不點擊的區(qū)域, radius用來設(shè)置以下列坐標(biāo)為圓心,不想點擊的半徑區(qū)域
  #MONKEY_BLACKLIST_POINT_LIST:
  #- 'radius,10'
  #- '0,0'

該節(jié)為所有UICrawler Monkey配置
1 MONKEY: 該節(jié) 要注意所有事件比率百分比之和要為100,
2 MONKEY_LIST: 中的 "MONKEY_SPECIAL_POINT_LIST: "對應(yīng) MONKEY:節(jié)的"#點擊MONKEY_SPECIAL_POINT_LIST中的坐標(biāo) 主要用于觸發(fā)"返回"功能
CLICK_SPECIAL_POINT_RATIO: 10"
3 MONKEY_LIST: 中的 "LONG_PRESS_LIST:" 對應(yīng) 對應(yīng) MONKEY:節(jié)的" #對應(yīng) LONG_PRESS_LIST:特殊坐標(biāo)長按(10秒)
LONG_PRESS_RATIO: 0"
那么上述配置的意思就是,執(zhí)行點擊事件80%,執(zhí)行滑動事件10%,點擊特殊區(qū)域坐標(biāo)事件10%

八 結(jié)語

之前一直用AppCrawler 也很優(yōu)秀,但無奈作者老大搞學(xué)院培訓(xùn),無心維護和深入繼續(xù)開發(fā),支持也一直停留在appium1.7.0.
這也就算了,答應(yīng)過的放出來打算做的特性都還沒兌現(xiàn)....
比較使用這兩個工具,執(zhí)行穩(wěn)定性上UICrawler可以連續(xù)跑很久(我最長跑了1小時回來還在繼續(xù)跑且當(dāng)前腳本配置來看截圖執(zhí)行的點擊比較細膩且有規(guī)律),且腳本執(zhí)行端不會報錯,但AppCrawler 10次 會有個3次左右,腳本執(zhí)行端會報錯且無法繼續(xù)執(zhí)行下去,另有些配置效果AppCrawler 我并未完全吃透和試驗出來.

補充說明

2018年6月29日追加
目前時間截點的config版本,該配置參數(shù)MONKEY_RUNNING_TIME: 6 已被CRAWLER_RUNNING_TIME 合并。請已官方github發(fā)布為準(zhǔn)。

cmd@TR:~/UICrawler$ java -jar UICrawler-2.0.jar -h

16:41:03.088 [main] INFO  Crawler -     -h  Print this usage information

    -a  Android package's main activity

    -b  iOS bundle id

    -c  Maximum click count

    -d  Maximum crawler UI depth

    -f  Yaml config  file

    -i  ignore crash

    -l  loop count

    -m  run monkey

    -p  Android package name

    -r  Crawler running time

    -t  Appium port

    -u  Device serial

    -v  Version

    -w  WDA port for ios

-p 指定package 就會保證不退出app 或者退出APP了 能自己再重起.
-l loop count 循環(huán)次數(shù),即一個Crawler running time遍歷時間結(jié)束后,繼續(xù)再跑幾個Crawler running time。比如遍歷時間6分鐘,6分鐘結(jié)束后 ,如果-l 是3 那就繼續(xù)再跑2遍6分鐘遍歷,共3次。

#當(dāng)發(fā)現(xiàn)App跳轉(zhuǎn)到以下app時 會觸發(fā)back鍵

  PRESS_BACK_KEY_PACKAGE_LIST:

  - 高德地圖

  - com.autonavi.minimap

  - com.android.settings

getpacgesource 里返回的值 只要contains 關(guān)鍵字 就trigger back key 。即遇到當(dāng)前被遍歷的界面上包含配置的關(guān)鍵字即會觸發(fā)back鍵。

疑惑與答疑
那這段配置遇到以下app 就back 是為了什么效果?跳到高德以后 會返回到app,不然會一直在高德里遍歷。

..................... 那不和 -p 一樣的效果 (-p 發(fā)現(xiàn)遍歷的不是指定app了 也要重起app)

不一樣啊,重啟launch app 和觸發(fā)返回 操作不一樣 你想想是不是。

那就是面向兩種場景的處理,保證不跳出遍歷app。

補充記錄:

2018年10月24日
已升級為appium1.9.1 ,在ubuntu18.04.1 windows10 升級后,均重跑UICrawler2.21 config 配置不變成功
升級記錄
https://testerhome.com/topics/12988#reply10
(以上為win10版本且?guī)еС肿鰓in32 uwp win應(yīng)用UI自動化的appium1.9.1升級方式.)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,488評論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,034評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 175,327評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,554評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 71,337評論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 54,883評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,975評論 3 439
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,114評論 0 286
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,625評論 1 332
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 40,555評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,737評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,244評論 5 355
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 43,973評論 3 345
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,362評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,615評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,343評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 47,699評論 2 370

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,586評論 25 707
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,776評論 18 139
  • 國慶節(jié)和平常的日子差不多,我已經(jīng)不再像以前那樣渴望放假了。上學(xué)的時候,周一渴望著周三,周三渴望著周六。 開學(xué)的時候...
    我是劉良閱讀 368評論 0 0
  • 每一段或充滿成就意義或無比糾結(jié)痛苦的人生經(jīng)歷都應(yīng)被記錄,正如趙昂老師的《在人生拐角處》里面提到的"人生的每個拐角都...
    敏思生涯閱讀 460評論 2 1
  • 經(jīng)過一夜奮戰(zhàn),商國的猛虎軍團已經(jīng)近乎全軍覆沒。硝煙彌漫的現(xiàn)場,處處充滿了血腥。林牧的計劃,執(zhí)行得非常成功。...
    清蒸紅燒魚閱讀 213評論 0 3