如果此問題太泛化,請隨時編輯,我很抱歉。我正在設計A.I.系統是監視/觀察人與桌面環境的交互並從中學習。 我可能會使用圖像捕捉和計算機視覺,但這會增加一層關於屏幕上交互元素的複雜性。 我想知道是否有一種方法可以直接從瀏覽器獲得用戶與鼠標單擊,焦點對齊,kb輸入等操作的實際DOM或HTML元素。 在Windows中,我可以將DLL掛鉤到瀏覽器中,但在Linux中,我不知道如何做類似的事情。這背後的想法是,當用戶點擊「按鈕」登錄,而不是使用CV捕獲圖像像素,我實際上得到用戶交互元素的數據結構。我該如何做這樣的事情?該引擎將是一個在C/C++中開發的服務。從正在運行的網絡瀏覽器獲取HTML/DOMYO
回答
如果您正在監控桌面環境,我對Linux環境有以下建議。
- 嘗試捕獲XWindow事件。由於像KDE,GNOME等窗口管理器是建立在它之上的,所以可能會給你更多的信息。
- 就瀏覽器而言,正如其他人所說的那樣,最好使用插件。它也是一個跨平臺的解決方案。
X事件觀察者的出發點爲here。希望這可以幫助你。
謝謝你們的區別。雖然大多數興趣在於瀏覽器交互,但我不想排除其他桌面交互。乾杯! –
Firefox的Selenium plugin通常用於測試,它具有記錄/回放機制,可以記錄您正在查找的事件類型。
如果您的軟件可能提示用戶安裝瀏覽器擴展,那麼您可以輕鬆地爲每個瀏覽器編寫不同的擴展。這些寫起來相對簡單。
您可以找到一些可以嵌入到擴展中的開源代碼,例如Selenium代碼庫,或者簡單地使用JavaScript庫(jQuery?)來捕獲所有瀏覽器事件併發送看起來像用戶交互的事件(點擊,滾動等)以及DOM細節和任何其他數據。也許你的引擎公開了一個REST服務來進行集成。
雖然要注意性能 - 取決於發送的數量,您可能需要實現工作隊列和批量事件,否則可能會降低瀏覽器速度。
OTOH,如果你需要讓瀏覽器獨立,那麼我不相信你將能夠以編程方式確定支持屏幕像素的HTML/DOM結構。至少,不是用任何我知道的工具,邏輯支持這一點:因爲每個瀏覽器都使用自己的代碼庫來實現DOM操作和顯示,所以內存中的數據格式是任何人的猜測。
這看起來像一個足夠簡單的解決方案。這是爲了研究,所以不需要提示,只有我和幾個測試人員在玩它。謝謝!我假設這隻適用於Firefox,但我可以在Chrome中做類似的事情? –
Chrome應該是非常簡單的...只需用一個.js文件編寫一個具有魔力的擴展:https://developer.chrome.com/extensions/getstarted.html –
- 1. 從網絡瀏覽器運行的JavaScript
- 2. 從網絡瀏覽器獲取位置
- 3. 從網絡瀏覽器中獲取url
- 4. 從網絡瀏覽器獲取對於windows phone'mango'的響應
- 5. 從網絡瀏覽器運行應用程序
- 6. 從網絡瀏覽器運行Symfony2控制檯命令
- 7. 如何使用Python從網絡瀏覽器獲取cookie?
- 8. 在網絡瀏覽器中運行的Java小應用程序
- 9. How ton在網絡瀏覽器中通過網絡運行eclipse java applet
- 10. 在網絡瀏覽器上運行python腳本
- 11. 在網絡瀏覽器上運行PHP文件
- 12. 從網絡瀏覽器打開本地文件夾瀏覽器
- 13. 如何使用網絡瀏覽器獲取網站文本wothout?
- 14. 網絡瀏覽器命令行程序
- 15. 從winform打開網絡瀏覽器
- 16. 從網絡瀏覽器打印
- 17. 網絡瀏覽器 - 全屏從代碼
- 18. 從網絡瀏覽器返回價值
- 19. 從網絡瀏覽器打印兩次
- 20. 自動網絡瀏覽器?
- 21. 打開網絡瀏覽器
- 22. 網絡瀏覽器集成
- 23. 從瀏覽器運行Netcat
- 24. 從瀏覽器運行videolan
- 25. 從瀏覽器中獲取所選行
- 26. 從瀏覽器獲取URL
- 27. 在wpf網絡瀏覽器控件中瀏覽安全網頁
- 28. Android:在網絡瀏覽器中的GPS
- 29. 高性能在瀏覽器的網絡
- 30. 如何獲取瀏覽器當前正在訪問的網址?
你是什麼意思得到元素的數據結構? – Sibi
@Sibi任何有關交互發生的元素的信息是。它是一個按鈕,它是一個鏈接,等等?使用計算機視覺這種推論如果不是不可能的話,確實很難。 –
以防萬一你沒有聽說過[heatmap](http://www.squidoo.com/heat-map)。 – Sibi