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

相关问题