5

エスプレッソを使用して、ログインボタンをクリックして外部のウェブサイト(Chromeカスタムタブ)を起動し、ログインしてAndroidアプリケーションにリダイレクトします。 エスプレッソを使用して外部ウェブサイトの要素にアクセスする方法

はにエスプレッソで仕方あり:
1)私は、ログイン情報を入力してログインし続けることができるように
2)は、ウェブサイト上の要素にアクセス起動され、正しいURLを確認してくださいは

enter image description here

エスプレッソ起動ナビゲータで表示しようとすると、ページに何も表示されず、記録しようとするとページ上に何かを入力することができなくなります。

これは私がこれまでに(それはKotlin(ないジャワ)である)持っているものです。 enter image description here

そして、ここでは表示されますエラーです: enter image description here

それは私のアプリケーションを起動し、選択ログインボタンをクリックしてWebサイトを開きますが、要素にアクセスすることはできません。

私も試してみました:

enter image description here

更新:これは、クロームカスタムタブ(ないWeb表示)を使用しているので、エスプレッソのWebが機能していませんが。

+0

ない画像として、プレーンテキストとして次の時間をあなたのコードを投稿してください。 –

答えて

1

私はエスプレッソとUI Automatorの両方を使用してこの問題を解決することができた:

あなたはここに

Espresso Webは、例えば、テストで使用することができます。あなたは2つを組み合わせることができます。ログインボタンの選択私はエスプレッソを使用しました(そして残りのアプリは、私はエスプレッソを使用します)。ログインするためのクロームカスタムタブを扱うために、私はUIAutomatorを使用:

enter image description here

+0

ありがとう、そんなに。私は決して同じボタンを2回押す必要はないと考えていたでしょう。どのようにしてそれを把握しましたか、なぜそれが必要だと思いますか? –

+0

ログインボタンを参照していますか?実際には、最初にヘッダーのサインをクリックしてからサインインボタンをクリックしていましたが、私はそれが必要でした。なぜなら、私はそれが現れるキーボードを却下する必要があったからです。キーボードがサインインボタンを覆っていたので、画面上の他の要素を最初にクリックして消してからサインインボタンにアクセスできました。希望が助けてくれる! – rfodge

+0

ありがとう!あなたは私に同じ問題を抱えていることに気付かせましたが、セレクタが十分に具体的でなく、それが私が思っていたものと違う何かをクリックしていたために機能しました。今私は別の、より明白なセレクターを使用することができます。 –

2

更新:

ChromeカスタムタブのテストにはEspressoを使用できません。エスプレッソは自分のアプリをテストするときに機能します。

ChromeのタブをテストするにはUI Automatorを使用できますが、そのようにしたくない可能性があります。

1)は、正しいURLはユニットテストはここで十分だろう

を立ち上げていることを確認します。 Chromeのカスタムタブライブラリに渡されたURLが正しいことを確認するだけです。あなたはあなたのコードが正常に動作することを確認しています。次に起こることは図書館で処理され、テストはそこに属します。私は、ログイン 情報を入力し、ここでは、簡単なWebページをテストしている

にログインし続けることができるように

2)は、ウェブサイト上の要素にアクセスします。エミュレータを起動する際のオーバーヘッドが増えるのはなぜですか?たぶんSeleniumか、Web用のクールなものはここ(Web開発者ではない)で動作しますか?

@Test 
public void typeTextInInput_clickButton_SubmitsForm() { 
    // Lazily launch the Activity with a custom start Intent per test. 
    mActivityRule.launchActivity(withWebFormIntent()); 

    // Selects the WebView in your layout. If you have multiple WebView objects, 
    // you can also use a matcher to select a given WebView, 
    // onWebView(withId(R.id.web_view)). 
    onWebView() 
     // Find the input element by ID. 
     .withElement(findElement(Locator.ID, "text_input")) 
     // Clear previous input. 
     .perform(clearElement()) 
     // Enter text into the input element. 
     .perform(DriverAtoms.webKeys(MACCHIATO)) 
     // Find the submit button. 
     .withElement(findElement(Locator.ID, "submitBtn")) 
     // Simulate a click using JavaScript. 
     .perform(webClick()) 
     // Find the response element by ID. 
     .withElement(findElement(Locator.ID, "response")) 
     // Verify that the response page contains the entered text. 
     .check(webMatches(getText(), containsString(MACCHIATO))); 
} 
+0

withWebFormIntent()とは何ですか?また、LaunchActivityを使用してアプリを起動してから、[ログイン]ボタンを選択すると、Webビューを使用する必要があります。 – rfodge

+0

JSを有効にして起動しようとすると(afterActivityLaunchedのオーバーライドで)、それが私に表示されます:android.support.test.espresso.NoMatchingViewException:階層内のビューが見つかりません:WebView with JS enabled – rfodge

+0

私は現在 – rfodge

関連する問題