0

我正在使用FlaUI库来自动化 Windows 计算器。

由于 Calculator 是 Windows 商店应用程序,因此应在主窗口的父级上执行诸如移动、更改视觉状态等窗口操作。这样做,我遇到了以下奇怪的问题:

Window parent = window.Parent.AsWindow();

虽然 'window.Parent' 是 x,但出于某种原因,'parent' 被指定为 x.Parent(在这种情况下是桌面)。

在此处输入图像描述

在此处输入图像描述

它不是恒定的;有时“父母”被分配为桌面,有时如预期的那样 - 计算器。

我以前从未见过与此问题类似的事情,也不知道如何解决这个问题,或者如何用几个关键字来描述它以搜索解决方案。

任何帮助,将不胜感激。

4

1 回答 1

0

主要问题肯定是GetMainWindow. 这是该过程的主窗口。Windows 在进程主窗口中相当不一致。就像启动画面可能会搞砸(有时你会得到启动画面,有时是启动画面后的屏幕)。您还经常得到甚至不再可用的窗口。商店应用程序也会发生同样的情况,因为它们使用此代理可执行文件来启动。您可以尝试几件事:

  1. 尝试使用进程中的第一个窗口 ( app.GetAllTopLevelWindows(automation)[0])
  2. 从桌面获取窗口 ( automation.GetDesktop().FindFirst(cf=>cf.ByName("Calculator")))
  3. 使用重试 (var mainWindow = Retry.While(() => app.GetMainWindow(automation), (mw) => mw.Title != "Calculator")

希望有帮助。

于 2019-11-22T08:27:01.640 回答