Могу ли я использовать XPCOM для создания и управления окном Firefox, как если бы я использовал Win32 COM с IE?

С помощью win32 COM я создаю экземпляр Internet Explorer и почти полностью контролирую его из своего кода Python (управляя окнами, элементами DOM и т. д.). В частности, используя DispatchEx('InternetExplorer.Application'). Могу ли я сделать то же самое, используя XPCOM и C++/python?

Мне нужно автоматизировать определенные действия, выполняемые с пользовательским интерфейсом html некоторых веб-сайтов, поэтому я не могу использовать urllib и не могу использовать селен, потому что он не работает с междоменными URL-адресами. Я написал класс-оболочку для Internet Explorer, где я могу создать окно браузера и делать с ним что угодно, но я хотел бы сделать то же самое и с firefox. Я думал о создании XUL-приложения, которое предоставляет функциональность DOM через tcp-сервер, написанный на XUL/js. Я даже не уверен, что это возможно, но если я могу делать все из своего кода на Python, не запуская xulrunner извне, это намного лучше.


person Luiz Geron    schedule 18.02.2010    source источник


Ответы (2)


Я ничего не знаю о программном создании полных экземпляров Firefox и управлении ими, но Mozilla определенно может быть встроена с помощью XPCOM.
3f" rel="nofollow noreferrer">Часто задаваемые вопросы по встраиванию Mozilla, инструкции по встраиванию и обзор API встраивания помогут вам начать работу. Существуют также другие способы встраивания.

person Georg Fritzsche    schedule 18.02.2010

Я использовал nsIDOMXULElement для подключения прослушивателей событий в моем коде XPCOM C++. Я не пробовал изменять пользовательский интерфейс, но, вероятно, он тоже сработает.

В качестве примера того, как получить nsIDOMXULElement, посмотрите на вызов «SetVideoWindow» в коде Songbird здесь.

person StackedCrooked    schedule 31.03.2010