0

我的 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 和我的应用程序。

AzureAD B2C 网络视图的屏幕截图

4

3 回答 3

0

您在 id 之前使用 input 有什么原因吗?如果 logonIdentifier 是您要输入的任何内容的 ID,则它应该是

app.Tap(c => c.WebView().Css("#logonIdentifier"));

此外,如果 logonIdentifier 是您要在其中键入的文本框,则输入文本应为

_app.EnterText(c => c.WebView().Css("#logonIdentifier"), "sample@example.com");
于 2019-10-04T21:02:53.157 回答
0

您可以尝试等待具有超时的元素 - 以毫秒、秒和分钟为单位的时间。

app.WaitForElement(x => x.Marked("AutomationID"), timeout:TimeSpan.FromSeconds(90));

或者

https://docs.microsoft.com/en-us/dotnet/api/xamarin.uitest.iapp.waitforelement?view=xamarin-uitest-sdk

于 2019-11-05T11:00:33.457 回答
0

看来您正在使用systembrowser而不是WebView.

使用 WebView 更改获取令牌的方法。

AuthenticationResult authResult = await _pca.AcquireTokenInteractive(B2CConstants.Scopes)
                .WithUseEmbeddedWebView(true)
                .ExecuteAsync();

https://github.com/microsoft/appcenter/issues/287#issuecomment-484151924

于 2021-01-14T13:28:09.333 回答