gpt4 book ai didi

c# - 编码 UI + Windows Phone 8.1 — 获取屏幕尺寸和方向?

转载 作者:太空宇宙 更新时间:2023-11-03 15:48:11 25 4
gpt4 key购买 nike

我尝试过的事情:

Windows.Graphics.Display.DisplayInformation WinRT API — GetForCurrentView 抛出提示“必须在与 CoreWindow 关联的线程上调用 GetForCurrentView”,看起来 CodedUI 测试在没有窗口的进程中运行。

GetSystemMetrics WinAPI — 返回正确的大小值,但屏幕未旋转。

EnumDisplaySettingsEx WinAPI — 不填充任何值。

DisplayProperties WinRT API — CurrentOrientation 和 NativeOrientation 始终为纵向。

还有其他想法吗?

提前致谢。

最佳答案

CODEDUI 测试确实在单独的进程中运行。它使用一种非常特殊的“反射”形式来查找“其他”进程中的控件。 codedUI 测试控件的基类是 UITestControl

Windows 操作系统的设计可防止其他进程中断或窥探正在发生的事情。因此,MSFT 必须对被测进程进行抽象,以允许您“查看”那些其他控件。您获得的可寻址性不是实际控件,而是该控件在另一个进程中的表示。您能够控制它,因为 MSTest 具有“向该控件发送消息”的能力。您受到以下事实的限制:您只能通过在此命名空间的类中找到的内容“获取”有关其他进程的信息:Microsoft.VisualStudio.TestTools.UITesting

一个很好的例子是在测试 WebBrowsers 时,CODEDUI 使用一个名为 BrowserWindow 的类,它与其他地方的 WebBrowser 类完全不同。我可以在 CODEDUI 中获取 DOM 的唯一方法是通过 BrowserWindow.Document 属性。然后我必须做一些花哨的 Actor 才能得到我想要的。我怀疑这是你必须要做的。

  1. 确定哪个 CodedUI 类将代表您正在自动化的窗口。
  2. 在该类中寻找可以让您找到所需内容的方法或属性。
  3. 如果找不到您需要的东西,那么您只有一个选择,那就是下降到操作系统消息传递层,看看您是否不能(在进程外)发送和接收消息。这是一个复杂而复杂的话题,我从未成功过。注意:在这一层完成的大部分工作都是用 C++ 完成的,因此了解 C++ 以及 Windows 如何使用它(API)真的很有帮助......

还有什么办法吗?

是的,QA 团队应该能够与编程团队一起为他们建立一些要求/ Hook 。首先要问的是“单元测试应该这样做吗?” CODEDUI 不是真正的功能测试,无论任何人教什么,它在验证功能方面都远不及单元测试。

其次,你可以要求开发团队在他们的代码中加入钩子(Hook),这样你就可以“得到那些东西”。换句话说,代码现在必须包含供 QA 团队进行验证的内容。在您的情况下,您可以要求开发人员为您提供一个调用 GetForCurrentView 并将结果传回的方法。但是因为 CodedUI 是可视化的而不是功能性的,所以您必须与他们合作才能弄清楚如何在 GUI 层公开结果。

还有什么吗?

是的,最后一件事是您可以使用 Fakes 拦截方法调用。如果他们为您设置了 Hook ,您可以调用它并拦截方法调用的结果...但是嘿,这听起来不像是单元测试吗?

关于c# - 编码 UI + Windows Phone 8.1 — 获取屏幕尺寸和方向?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27167292/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com