我的Xamarin.Forms应用使用Azure AD B2C进行身份验证。它工作得很好。我现在正在尝试构建UI自动化测试,但我遇到了我的第一个拦截器。我一直在尝试等待WebView出现在屏幕上,这样我就可以在ui测试自动化脚本中输入测试用户的电子邮件和密码,但是WaitForElement方法总是超时!
[Test]
public void RegistrationStarts()
{
app.Screenshot("Welcome screen.");
app.WaitForElement(c => c.WebView());
app.Tap(c => c.WebView().Css("input#logonIdentifier"));
app.EnterText("sample@example.com");
}我不知道为什么。我只在Android上测试。我注意到Azure AD B2C登录web视图显示在我的应用程序中。我能说出这一点是因为当我打开Android任务切换器时,我可以看到Chrome和我的应用程序。

发布于 2019-10-05 05:02:53
在id之前使用input有什么原因吗?如果logonIdentifier是您想要输入的ID,那么它应该是
app.Tap(c => c.WebView().Css("#logonIdentifier"));此外,如果logonIdentifier是要在其中键入的TextBox,则输入文本应为
_app.EnterText(c => c.WebView().Css("#logonIdentifier"), "sample@example.com");发布于 2019-11-05 19:00:33
您可以尝试使用timeout - time等待元素,单位为毫秒、秒和分钟。
app.WaitForElement(x => x.Marked("AutomationID"),timeout:TimeSpan.FromSeconds(90));
或
发布于 2021-01-14 21:28:09
您似乎正在使用systembrowser而不是WebView。
使用WebView更改获取令牌的方法。
AuthenticationResult authResult = await _pca.AcquireTokenInteractive(B2CConstants.Scopes)
.WithUseEmbeddedWebView(true)
.ExecuteAsync();https://github.com/microsoft/appcenter/issues/287#issuecomment-484151924
https://stackoverflow.com/questions/57683510
复制相似问题