【问题标题】:Does Microsoft UI Automation Framework work with Chrome, Python and Java Apps?Microsoft UI 自动化框架是否适用于 Chrome、Python 和 Java 应用程序?
【发布时间】:2018-04-23 07:56:50
【问题描述】:

我正在从事一个自动化项目,其中我需要捕获用户在桌面上执行的活动 [应用程序启动、数据输入、输入类型等]。我遇到了 Microsoft UI 自动化框架,到目前为止,它适用于基于原生 Windows 的应用程序,如 MS Office、.NET 应用程序等。但是我没有找到任何有用的信息/从不同 Web 浏览器捕获信息的示例 [Chrome 是必须的] 、Python 应用程序、Java 应用程序等。有人可以确认 MS UI 自动化框架是否支持此类应用程序。任何从这些应用程序中提取用户活动的工作示例都将受到高度赞赏。谢谢。

【问题讨论】:

    标签: automation ui-automation microsoft-ui-automation


    【解决方案1】:

    我参加聚会有点晚了.. 但是 Chrome 的辅助功能只有在尝试访问它的辅助功能时才会被激活。

    如果您使用窗口句柄调用 AccessibleObjectFromWindow ([DllImport("oleacc.dll")]),则现有 chrome 窗口将激活其可访问性(您将在 UIA 中看到实际的网页内容!)。

    如果在您的应用程序运行后打开 chrome 窗口 - Chrome 会为任何打开的辅助功能应用程序打开进程...为此您使用 AccessibleObjectFromEvent 并且您响应的事件来自 Windows 管道: EVENT_SYSTEM_ALERT = 0x0002 。

    底线是 - 你必须告诉 chrome 有安装的东西想要访问它的网页内容。

    哦!你的申请必须签名!!未签名的应用程序将无法访问网络内容 - 我认为在 Firefox 中也是如此。

    我希望这对将来的某人有所帮助。

    见: https://www.chromium.org/developers/design-documents/accessibility

    【讨论】:

    【解决方案2】:

    对西蒙的回答进行了一些补充......

    如果您运行 chrome --force-renderer-accessibility,UIA 可以看到 Chrome 页面内容。仅对于现有的 Chrome 进程它不起作用。虽然用户可以手动创建一个新选项卡chrome://accessibility 并为所有或部分选定页面启用 UIA。此方法也适用于 Linux 上的 AT-SPI 可访问性技术。当然,Selenium WebDriver 在这里是一个行业标准。但存在另一种方式。 Mozilla 和 IE 默认都支持 UIA。

    Inspect.exe可以简单地从this GitHub repo下载。

    关于 Java 应用程序,这取决于应用程序类型。你的机会大约是 50/50。

    WxPython 或 PyQt5 适合 UIA。 TkInter 或 Kivy 应用程序不是。

    附:有一个例子how to drag a file from explorer.exe and drop to Google Drive in Chrome使用Python库pywinauto

    【讨论】:

    • 需要帮助。您说:“UIA 可以看到 Chrome 页面内容”。我想在 chrome 上的 webapp 上执行事件(比如跟踪按下的键和单击的按钮以及在什么元素上)。我可以通过在 chrome 上使用 UIA 来做到这一点吗?。
    【解决方案3】:

    Chrome 仅支持网页周围的工具栏、选项卡、菜单、按钮的 UI 自动化。 UIA 看不到所有呈现为网页的内容。

    对于网页内容,最简单的方法是使用Selenium(由ChromeDriver驱动),这是一种事实上的浏览器标准,与UIA无关。

    要测试应用是否支持 UIA,以及它支持多远,这非常简单,只需运行 UIA 的 Inspect tool 并检查该应用上的 UI 树。

    【讨论】:

    • UIA 应该可以看到 chrome 文档,只要该文档至少部分可见。您可以使用 Inspect 工具在部分可见的 chrome 窗口和最小化的 chrome 窗口上进行测试。这是在 2021 年。
    • @BarmakShemirani - 一些(!)答案的日期是肯定的,但不是每个人都使用 2021 年的技术,你为什么不自己做出答案?
    • 这个答案是正确的,除了 Chrome 的奇怪行为。例如 Firefox 按预期工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-10
    • 2023-03-10
    • 2017-02-08
    • 1970-01-01
    • 2017-11-25
    • 1970-01-01
    • 2016-05-25
    相关资源
    最近更新 更多