使用espresso,我们点击一个登录按钮,启动外部网站(Chrome自定义标签),您可以登录,然后重定向回我们的Android应用程序。
Espresso有没有办法: 1)验证正在启动的URL是否正确 2)访问网站上的元素,以便我可以输入登录信息并继续登录
当我尝试在Espresso Launch Navigator中查看它时,页面上没有显示任何内容,如果我尝试录制,则不会在页面上输入任何内容。
启动我的应用程序,选择登录按钮,打开网站但无法访问这些元素。
我也尝试过:
更新:这是使用Chrome自定义标签(不是网络视图),因此Espresso Web无法使用。
答案 0 :(得分:2)
更新
您无法使用Espresso来测试Chrome自定义标签。 Espresso适用于测试您自己的应用程序。
要测试Chrome标签页,您可以使用UI Automator,但您可能不希望这样做。
1)验证是否正在启动正确的URL
单元测试就足够了。您只需确保传递给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)));
}
答案 1 :(得分:1)