如果这个问题太笼统,我很抱歉,如果它是请随时编辑。我正在设计一个人工智能系统,用来监控/观察人类与桌面环境的交互,并从中学习。我可以使用图像捕获和计算机视觉,但这增加了关于屏幕上交互元素的复杂性。我想知道是否有一种方法可以直接从浏览器获取用户与之交互的实际DOM或HTML元素(鼠标单击、焦点、kb输入等)。在windows中,我也许能够将DLL连接到浏览器中,但在Linux中,我不知道如何做类似的事情。这背后的想法是,当用户点击"Button“登录,而不是使用CV捕获图像像素,我实际上获得了用户交互的元素的数据结构。我怎么能做这样的事情呢?该引擎将是一个用C/C++开发的服务。
发布于 2012-11-28 04:08:27
如果您正在监视桌面环境,我对Linux环境有以下建议。
X事件观察器的起始点是here。希望这对你有帮助。
发布于 2012-11-28 03:26:51
火狐的Selenium plugin通常用于测试,它有一个记录/回放机制,可以记录你正在寻找的事件类型。
发布于 2012-11-28 03:35:02
如果您的软件可以提示用户安装浏览器扩展,那么您可以很容易地为每个浏览器编写不同的扩展。这些都是相对容易编写的。
您可以找到一些可以嵌入到扩展中的开放源代码,比如Selenium代码库,或者简单地使用JavaScript库(jQuery?)捕获所有浏览器事件,并将看起来像用户交互(单击、滚动等)的事件与DOM详细信息和任何其他数据一起发送到您的系统。也许让你的引擎公开一个REST服务来进行集成。
不过,要注意性能--取决于你发送的信息量,你可能需要实现一个工作队列和批处理事件,或者你可能会减慢他们的浏览器。
OTOH,如果你需要离开他们的浏览器,那么我不相信你将能够以编程方式确定支持屏幕上像素的HTML/DOM结构。至少,不是我所知道的任何工具,逻辑支持这一点:因为每个浏览器都使用自己的代码库实现DOM操作和显示,所以内存中数据的格式是任何人都不知道的。
https://stackoverflow.com/questions/13591473
复制相似问题