我能否使用XPCOM创建和操作Firefox窗口,就像在IE中使用win32 COM一样?
我用win32 COM创建了一个Internet Explorer实例,可以通过我的Python代码几乎完全控制它(比如操作窗口、DOM元素等等)。具体来说,我是用DispatchEx('InternetExplorer.Application')来实现的。我能不能用XPCOM和C++/Python做同样的事情呢?
我需要自动化一些在某些网站的HTML界面上进行的操作,所以我不能用urllib,也不能用selenium,因为它不支持跨域网址。我写了一个Internet Explorer的封装类,可以创建一个浏览器窗口并对它进行各种操作,但我也想在Firefox上做到这一点。我考虑过创建一个XUL应用,通过用XUL/js写的tcp服务器来暴露DOM功能。我甚至不确定这是否可行,但如果我能在Python代码中完成所有操作,而不需要外部运行xulrunner,那就更好了。
2 个回答
1
我在我的XPCOM C++代码中使用了 nsIDOMXULElement 来添加事件监听器。虽然我还没有尝试修改用户界面,但应该也能正常工作。
如果你想看看如何获取nsIDOMXULElement,可以查看Songbird代码中的“SetVideoWindow”这个调用,具体内容可以在 这里 找到。
1
我不太清楚怎么通过程序来创建和控制完整的Firefox浏览器实例,但Mozilla确实可以通过XPCOM来嵌入。
你可以查看Mozilla嵌入常见问题、嵌入教程和嵌入API概述来入门。此外,还有其他嵌入方式可以参考。