2

Google/StackOverflowの中から何度も検索して答えを探しました。
元々(Android 6.0以前)、私のオートメーションコードはスムーズに動いていましたが、すべてが許可されたダイアログでブロックされています。
私のアプリケーションはSDカードにデータを保存する必要があり、ランタイムテスト中にcom.android.packageInstallerプロセスによって作成されたSDカードの権限が必要なダイアログを閉じるためにSelendroidオートメーションを使用することができません。
私は自分のアプリケーションの権限を手動で事前設定することができますが、Jenkinsでアプリケーションを再インストールしたり、AppをテストするためにSelendroidの新しいセッションを開始するたびに、すべての設定が消去されます。ここに私の現在の理解からSelendroidの自動化テストでAndroid 6.0権限が必要なダイアログを閉じる

は、この問題を解消することができる方法を、次のとおりです。
1.現在の設定を一掃ないSelendroidを伝えるために、「NORESET」フラグを追加しますが、私はselendroid.io
2でそれを見つけることができません代わりにAppiumを使用してください(AndroidのNoResetフラグが付いていることが書類に記載されています)が、これはSelendroidからAppiumにコードを移植するのに時間がかかります。
そして、移植が完了した後に動作するかどうかしかわかりません。
3. Googleが提供しているその他の方法ですが、見つけられません。

似たような問題を抱えていて、いくつかの情報を持っている人が私と共有できる人は、おかげさまで大変感謝しています。

+0

は今、あなたの問題は、いくつかのダイアログポップアップが来ているされて、あなたはそれを処理したいですか?ダイアログボックスのボタンを押すと動作しますか?あなたの "可能な方法#3"のために、あなたは正確に何を自動化しようとしていますか? – Rilwan

+0

私がしたいのは、表示されるたびにダイアログを受け入れることだけです。 私は受け入れるためにSelendroidを使ってみましたが、どれもうまくいきませんでした。 Selendroidは、SDカードのアクセス許可ダイアログの要素を見つけることができないと言いました.Selendroidは自分のアプリケーションを操作できるだけですが、Systemによって作成されたダイアログを閉じることはできません。 もちろん、私は問題なく手動で解読することができます。 – holy934

+0

あなたはアンドロイドuiautomatorを使用して簡単に "受け入れる"ボタンやダイアログボックスを処理することができます。そうでなければ、 'adb shell input keyevent'を使ってダイアログボックス上のボタンをナビゲートして押すことができます。 – Rilwan

答えて

0

uが探している設定はprollyです:

SelendroidConfiguration config = new SelendroidConfiguration(); 
config.setNoClearData(true); 

uは一度だけ任意の許可を与える必要がありますし、OSが後に今までに覚えているでしょうこの方法です。

+0

私が私の理解の中で述べた選択肢1です。 しかし、データを消去しないというのは、「私のアプリケーションの最後のアクティビティを管理する必要がある」ということです。これは他の問題を引き起こし、私はそれを断念しました。 これらのケースをエスプレッソに移行しました。 – holy934

+0

私は実際にこの記事から引用されたUIAutomatorを使用しています http://stackoverflow.com/questions/33929937/android-marshmallow-test-permissions-with-espresso – holy934

0

Android UIAutomatorを数日読んでこれまでのコードを評価したところ、Selendroid自身のためにAUT(Test Under Application)からUIを操作することはできないようです。
また、現在のプロジェクトのSelendroidまたはGoogle UIAutomatorからAppiumに切り替えるのに時間がかかります。

最も簡単で確かな方法は、Xデバイスのタイプ=解像度の種類がほとんどないため、X &の座標をタップする[ADBシェル入力タップ]を送信することです。

SelendroidDriver driver = new SelendroidDriver(new URL("http://localhost:4444/wd/hub"), caps); 
... 
driver.getAdbConnection().executeShellCommand("input tap 1100 1100"); 
0

あなたが実際にSelendroid権限を追加するために、自動的にadbのコマンドを実行することができます:あなたがSCARDするいくつかのデータを保存しようとする

List <String> commands = new ArrayList<>(); 
commands.add("shell pm grant com.example.yourapp android.permission.READ_EXTERNAL_STORAGE") 

SelendroidCapabilities capabilities = new SelendroidCapabilities(); 
capabilities.setPreSessionAdbCommands(commands) 
関連する問題