我正在开发一个自动化项目,我需要捕获用户在桌面上执行的活动[启动的应用程序,输入的数据,输入类型等]。我遇到了Microsoft UI自动化框架,到目前为止适用于基于Windows的本机应用程序,如MS Office,.NET应用程序等。但是我没有找到任何有用的信息/样本来捕获来自不同Web浏览器的信息[Chrome是必须的] ,Python应用程序,Java应用程序等。有人可以确认MS UI Automation Framework是否支持此类应用程序。任何从这些应用程序中提取用户活动的工作示例都将受到高度赞赏。感谢。
答案 0 :(得分:4)
Chrome仅支持工具栏,标签,菜单,围绕网页的UI自动化功能。 UIA看不到作为网页呈现的所有内容。
对于网页内容,最简单的方法是使用Selenium(由ChromeDriver驱动),这是浏览器的事实标准,与UIA无关。
要测试一个应用是否支持UIA,以及它有多远,这很容易,只需运行UIA的Inspect tool并检查该应用程序上的UI树。
答案 1 :(得分:4)
西蒙回答的一些补充......
如果您运行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应用程序不是。
P.S。有一个使用Python库how to drag a file from explorer.exe and drop to Google Drive in Chrome的示例pywinauto。
答案 2 :(得分:0)
我参加聚会有点晚了。 但是Chrome浏览器的辅助功能只有在有人尝试访问它的辅助功能时才被激活。
如果使用窗口句柄调用AccessibleObjectFromWindow([DllImport(“ oleacc.dll”)]),则现有的chrome窗口将激活其可访问性(您将在UIA中看到实际的网页内容!)。
如果您的应用程序运行后打开了Chrome窗口-Chrome pings打开所有可访问性应用程序的进程...为此您使用AccessibleObjectFromEvent,而您响应的事件来自Windows管道:EVENT_SYSTEM_ALERT = 0x0002。
最重要的是-您必须告诉chrome已经安装了一些想要访问其网页内容的内容。
哦!您的申请必须经过签名!!未签名的应用程序将无法访问Web内容-我认为在Firefox中也是如此。
我希望这对以后的人有所帮助。
请参阅: https://www.chromium.org/developers/design-documents/accessibility