簡體   English   中英

解鎖模擬器或設備以進行Android測試

[英]Unlocking the emulator or device for Android test

我正在編寫Android功能測試。 我需要喚醒設備並使應用程序可視化以便它們工作。 我已經咨詢了Android開發人員 但是,提出的解決方案存在一些問題:

  • 現在提出的方法有幾種不推薦使用的方法。 Android API現在建議我在窗口上使用標志:

此類在API級別13中已棄用。請改用FLAG_DISMISS_KEYGUARD和/或FLAG_SHOW_WHEN_LOCKED; 這允許您在應用程序移入和移出前台時無縫隱藏鍵盤鎖,並且不需要請求任何特殊權限。 newKeyguardLock(String)返回的句柄允許您禁用/重新啟用鍵盤鎖。

然而,我嘗試了這個建議,而不是棄用的解決方案,標志一個jsut對我不起作用 - 它沒有解鎖設備。 我還發現了證實標志解決方案不穩定的消息來源(例如對這個答案的評論)。

  • 第二個問題是我需要為正在測試的應用程序添加權限。 我發現這是一種非常錯誤的方法(修改測試中的代碼以便能夠測試它)。 我發現有幾個地方建議我使用src/debug/AndroidManifest.xml (例如這一個這個 )。 但是,它並沒有按照規定發生 - 調試Mainfest不會包含在設備上已部署的內容中。 它與我構建和部署的方式有關嗎? 我使用Eclipse進行開發(ADT)。 只有當我使用像ant這樣的構建工具時,這個清單注入才會起作用

總而言之 - 有人可以建議一個穩定的解決方案,以便在我的測試執行期間解鎖並保持喚醒設備嗎?

編輯

我現在發現Robotium還在其最新版本的框架中包含了unlockScreen方法。 它完全使用上面提出的窗口標志,也不能在我的設備上運行。

在運行Robotium測試時,我遇到了與不可靠解鎖相同的問題。 我沒有找到程序化解鎖可靠工作的設備的解決方案,但我做了兩件事作為解決方法。

  • 只需禁用鎖定屏幕( Settings -> Security -> Screen lock -> None )。 不理想,但在一天結束時,可靠的測試是重要的。

  • 啟用“保持清醒”設置以防止屏幕由於不活動而關閉( Settings -> Developer options -> Stay awake )。 有些OEM /手機要么沒有這個選項,要么仍然關閉,所以對於那些討厭的設備,我安裝了KeepScreenOn應用程序。

警告:每天24小時在主屏幕上打開屏幕可能會導致屏幕老化或重影。 我不確定這是否是永久性的,但請注意這一點。 在我們的例子中,我們使用專用的測試設備,所以這不是什么大問題。

另請注意,由於手機的屏幕始終處於打開狀態,因此您可能需要調低亮度以降低電池電量(有時USB充電速度可能會很慢)。

UiDevice實例有wakeUp()方法

如果屏幕關閉,此方法模擬按下電源按鈕,否則如果屏幕已經打開則不執行任何操作。 如果屏幕關閉且剛剛打開,此方法將插入500毫秒的延遲,以允許設備時間喚醒並接受輸入。

然而,我不知道解鎖屏幕存在類似的方法,因此我目前的解決方案是刪除鎖定模式(在測試設備上設置為NONE

到目前為止,只有對我有用的事情是在測試之前啟動喚醒設備腳本。 腳本通過向所有設備發送鍵事件來從cli解鎖設備。 解鎖部分在我的經驗中很重要,有些設備不允許你從cli解鎖它們(你仍然需要刷卡),在這種情況下我建議在Google Play上使用“無鎖”應用程序,它應該有幫助,但可能不適用於所有設備。

我正在研究Gradle插件,它會在Gradle構建過程中運行檢測測試之前做同樣的事情。

我對棄用和新方法都有類似的麻煩。 最終,我最終得到了這個黑客,只是發送一個向上滑動手勢來解鎖:

KeyguardManager keyguardManager = (KeyguardManager) InstrumentationRegistry.getContext().getSystemService(Context.KEYGUARD_SERVICE);
if (keyguardManager.isKeyguardLocked()) {
  UiDevice device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());
  int x = device.getDisplayWidth() / 2;
  int startY = device.getDisplayHeight();
  int endY = 0;
  device.swipe(x, startY, x, endY, 50);
}

它依賴於鎖屏的細節,但到目前為止它的效果令人驚訝。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM