5

使用espresso,我們點擊登錄按鈕,啓動一個外部網站(Chrome自定義標籤),您可以在其中登錄,然後重定向到我們的Android應用程序。如何使用Espresso訪問外部網站上的元素

是否有咖啡辦法:
1)確認正確的網址正在啓動
2)訪問網站上的內容,這樣我可以輸入登錄信息,並繼續登錄

enter image description here

當我嘗試在Espresso Launch Navigator中查看它時,沒有顯示任何頁面,如果我嘗試記錄,它不會在我輸入頁面上的任何內容時顯示。

這是我迄今(它是在科特林(不是Java)): enter image description here

這裏是被顯示的錯誤: enter image description here

它啓動我的應用程序,選擇登錄按鈕,打開網站,但它不能訪問的元素。

我也試過:

enter image description here

更新:這是使用Chrome自定義選項卡(不是Web瀏覽),所以咖啡網絡不能正常工作。

+0

請張貼您以純文本格式下一次代碼,而不是圖像。 –

回答

1

我能解決同時使用咖啡和用戶界面的Automator這個問題。你可以將兩者結合起來。登錄按鈕的選擇我使用了Espresso(和其他應用程序,我將使用Espresso)。爲了處理鉻自定義選項卡進行登錄,我用UIAutomator:

enter image description here

+0

非常感謝。我從來不會想到必須按這樣的按鈕兩次。你是怎麼弄明白的?爲什麼你認爲這是必要的? –

+0

你是指登錄按鈕?它實際上是首先點擊登錄標頭,然後登錄按鈕,但我必須這樣做,因爲我需要它來解除出現的鍵盤。鍵盤覆蓋了登錄按鈕,所以我點擊屏幕上其他位置的元素,讓它消失,然後我可以訪問登錄按鈕。希望有所幫助! – rfodge

+0

謝謝!你讓我意識到我遇到了同樣的問題,但是它工作起來是因爲我的選擇器不夠具體,並且點擊了一些與我以前不同的東西。現在我可以使用另一個更明顯的選擇器。 –

2

更新:

您不能使用Espresso測試Chrome自定義選項卡。 Espresso在測試自己的應用程序時起作用。

要測試Chrome選項卡,您可以使用UI Automator,但您可能不想這樣做。

1)確認正確的網址正在啓動

單元測試就足夠了這裏。您只需確保傳遞給Chrome自定義標籤庫的網址是正確的。您正在確保您的代碼正常工作。接下來發生的事情由圖書館處理,並且測試屬於那裏。

2)訪問網站上的內容,這樣我可以輸入登錄信息 繼續登錄

在這裏,你正在測試一個簡單的網頁。爲什麼你想要啓動一個模擬器的額外開銷?也許Selenium或任何很酷的網絡會在這裏工作(不是一個網絡開發)?

您可以使用Espresso 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:在層次結構中找不到匹配的視圖:啓用JS的WebView – rfodge

+0

已更新的問題,更多關於什麼的信息我目前有 – rfodge