2

Android デバイスでいくつかの Calabash テストを実行しようとしています。テストを実行する前に手動で画面を回転させると、すべてが機能します。Nexus 4 で画面をオフにしてテストを実行しようとすると、要素が表示されるのを待って最初のシナリオがタイムアウトします。Galaxy Nexus では、画面をオフにしてテストを開始すると、Calabash がデバイスを起動し、テストに合格します。

カラバッシュが単にウェイクアップできないデバイスはありますか? Nexus 4 はこれらの 1 つですか? 多くのデバイスでこれらのテストを頻繁に実行するため、デバイスを手動でオンにすることは現実的ではありません。

この問題に関する古い参照をいくつか見つけました。https://groups.google.com/forum/#!topic/calabash-android/o6lUuEOuGtEのAdam Niedzielski による 2012 年の投稿では、次のフックが提案されています。app_life_cycle_hooks.rb

include Calabash::Android::Operations

AfterConfiguration do |config|
  wake_up
end

しかし、モジュールの組み込みを明示的に禁止するコードがruby-gem/bin/calabash-androidCalabashに追加されました: https://github.com/calabash/calabash-android/commit/995daef9b6636e7e4e572aeb5d4f90d6d072320fしたがって、これはもはや推奨されるアプローチではないと思います。インクルードを削除して入力すると、.OperationsCalabash::Android::Operations.wake_upNameError

4

1 に答える 1

4

私は時々このエラーに遭遇し、テストを開始する前に画面のタイムアウトを1分以上に設定し、このメソッドを実行することになりました:

  def self.turn_on_screen(device_serial_number)
    # Switches on the android devices screen if it isn’t already on.
    if `adb -s #{device_serial_number} shell dumpsys input_method | grep mScreenOn`.include? 'false'
      `adb -s #{device_serial_number} shell input keyevent KEYCODE_POWER`
    end
  end

これにより、画面がまだオンになっていない場合に、電源ボタンのキープレスがシミュレートされます。私はこれを約4つの異なるデバイスで使用しましたが、これまでのところ問題はなかったので、うまくいくことを願っています.

デバイスのロック画面もオフにしたことは注目に値するかもしれません.

編集: lollipop の更新後、別のチェックを追加する必要がありました。両方を使用すると、すべてのテストデバイスでうまくいくようです。

if `adb shell dumpsys input_method | grep mInteractive`.include? 'false'
  `adb shell input keyevent KEYCODE_POWER`
end
于 2014-12-09T17:08:36.637 に答える