从Android中的Espresso在WebView中匹配视图

从Android中的Espresso在WebView中匹配视图,android,salesforce,android-webview,android-espresso,Android,Salesforce,Android Webview,Android Espresso,我想匹配加载Salesforce登录页面的WebView中的用户名文本字段(但也可以应用于任何其他具有文本字段的页面) 我试过: onView(withHint("User Name")).perform(typeText("test@sf.com")); 但这不起作用。有更好的主意吗?您可以填写表单,只需在WebView中运行js代码。 例如: webView.loadUrl(" javascript:document.getElementById('username-field')

我想匹配加载Salesforce登录页面的WebView中的用户名文本字段(但也可以应用于任何其他具有文本字段的页面)

我试过:

onView(withHint("User Name")).perform(typeText("test@sf.com"));

但这不起作用。有更好的主意吗?

您可以填写表单,只需在WebView中运行js代码。 例如:

webView.loadUrl("
   javascript:document.getElementById('username-field').value = 'test@sf.com’;
");

这可以通过使用Espresso Web 2.2 API实现

onWebView().withElement(findElement(Locator.ID,"username")).perform(webKeys("test@sf.com"));

如果您不知道ID,请使用Locator.Xpath。 要首先找到xpath,您需要检查html代码,根据这些代码编写xpath。 要获取html源代码,可以使用chrome inspector。
将设备连接到电脑,然后打开chrome inspector。您可以右键单击html代码,然后单击复制xpath以获取xpath。

有人尝试过使用Espresso 2.2 Web API来实现这一点吗?如果我不知道定位器ID并且只知道提示(文本视图),例如“用户名”,该怎么办?上述代码适用于上述网站。谢谢你的逻辑。我试过其他网站,它不适合我。特定的公共领域网站是否有任何限制?请更新。我尝试过www.google.com点击登录按钮。不为我工作。您能对此提出建议吗?我们能将此xPath逻辑应用于任何公共域网站吗。例如:www.google.com页面包含登录按钮。我们可以尝试登录BDD webview自动单击按钮吗。网站是否有任何限制?