2018年10月1日 星期一

04-寶寶乖~寶寶睡 (MonkeyRunner.sleep)

Monkeyrunner 有提供一個睡眠的指令 MonkeyRunner.sleep (float seconds),它並不是命令 Android 裝置進入睡眠狀態,而是命令腳本暫停執行。

參數:
seconds 單位是秒,表示睡眠的時間。和 MonkeyRunner.waitForConnection() 的 timeout 參數一樣,毫秒等級以小數表示,如 3.5 秒。

它的使用情境可以如下:
  • 目前裝置沒有適合操控的事項
    比如有個測項要求等待某個對話方塊出現後再點擊它的 Yes 按鈕,這時咱們能做的不外乎是監控裝置畫面是否如預期,若是,便點擊按鈕;否則就繼續偵測。但若咱們知道這個對話方塊會在一段時間後才出現,那便不必時時偵測,而是暫停腳本一陣子後再回來監控。
    當然,看官也可以選擇不讓腳本休息,持續偵測,但這將嚴重占用電腦的 CPU 使用率,拖慢電腦執行其他工作的效率,但若看官的電腦配備是電競或工作站等級的高級貨,那就儘管放手做吧~
  • 特殊操控需求
    比如要求長按某個實體按鍵或螢幕區域,這種操作一般都是先送一個壓下的命令,然後睡個幾秒,接著再送一個放開的命令。
  • 避免 monkeyrunner 掛掉!!
    是的!看官們沒看錯!這是最最嚴重的問題!
    或許是本喵貓品太差了!不是跑測項途中 monkeyrunner 掛點給你看,就是電腦直接熱到自行關機(本喵想要有電競等級的電腦阿~)!Monkeyrunner 提供的 methods 有些是不能快速連續送給 Android 裝置的(之後的文章會對本喵用過的 methods 需要注意的部分做詳細的介紹),所以一定要讓腳本在兩個快速連續執行的命令間小睡片刻,但其實這也不是絕對能就此高枕無憂,只是讓 monkeyrunner 死掉的機會變小而已。
    推測其死掉的原因或許是執行腳本的電腦不夠力(因為別人似乎沒像本喵死的那麼頻繁),或是 Android 裝置與電腦的溝通不良(如品質不良的連接線),甚或單純是 monkeyrunner 的限制或 bug,可能原因很多,總之沒事多睡覺,多睡覺沒事!

沒有留言:

張貼留言