Xamarin.UITest Query 元素在 SFSafariViewController 和 ChromeCust



我们目前正在Xamarin应用程序中实现Open Id Connect。因此,我们还希望调整UI-Tests,以便在使用Xamarin.UITest在浏览器中登录。

但是,当我们尝试使用c => c.CSS(".css-selector")选择器查询用户名和密码输入字段时,如此处所述,不会返回任何结果。这发生在iOS上的ASWebAuthenticationSession以及Android上的ChromeCustomTabs中。

这里是选择元素的代码:

App.EnterText(c => c.Css("input[type="email"]"), "username");
App.EnterText(c => c.Css("input[type="password"]"), "password");
App.DismissKeyboard(); // On smaller screen the login button might be hidden below the keyboard otherwise
App.Tap(c => c.Css("button[type="submit"]"));

我还尝试使用另一个选择器,如"div"或"body",但没有返回任何内容。

错误如下所示Unable to enter text. Query for Css("input[type="email"]") gave no results.

最后,对于 iOS 来说,SFSafariView在树输出中呈现为此处。

[CalabashRootView > UIWindow]                                                                        
[UITransitionView > UIDropShadowView]
[UIView > UIScrollView]
[UIView]
[UIImageView] id: "login_logo.png"
[UIView]
[UIImageView] id: "loading_spinner.png"
[_UIScrollViewScrollIndicator > UIView] label: "Vertical scroll bar, 1 page",  text: "0%" (center not on screen)
[_UIScrollViewScrollIndicator > UIView] label: "Horizontal scroll bar, 1 page",  text: "0%" (center not on screen)
[UIDimmingView]
[UITransitionView]
[UIDimmingView]
[UIDropShadowView > ... > SFSafariView]
[SFSafariLaunchPlaceholderView]
[UINavigationBar]
[_UIBarBackground]
[_UIBarBackgroundShadowView > _UIBarBackgroundShadowContentImageView]
[UIVisualEffectView > _UIVisualEffectBackdropView]
[_UINavigationBarContentView]
[UIToolbar > _UIBarBackground] id: "Toolbar"
[_UIBarBackgroundShadowView > _UIBarBackgroundShadowContentImageView]
[UIVisualEffectView > _UIVisualEffectBackdropView]
[_UISizeTrackingView]
[_UIRemoteView] id: "RemoteViewBridge"

我是否错过了一个步骤,或者是否有其他方法来测试这些方案?

无法读出安全的 Web 视图。创建这些 Web 视图是为了让用户可以在应用程序本身无法访问的安全环境中登录。因此,查询不起作用是一件好事。

使用后门为 UI 测试注入不安全的 Web 视图,或者如果需要令牌与 API 通信,请使用客户端凭据流。不过,生产应用应使用 PKCE。

相关内容

  • 没有找到相关文章

最新更新