Управление браузером с помощью Python на Mac

Я ищу способ программного управления браузером на Mac (например, Firefox или Safari или Chrome / iium или Opera, но не IE) с использованием Python.

Необходимые действия включают следующие ссылки, проверку наличия элементов на странице и отправку форм.

Какое решение вы бы порекомендовали?

10 Solutions collect form web for “Управление браузером с помощью Python на Mac”

Мне нравится Selenium , это сценарий через Python . Selenium IDE работает только в Firefox, но Selenium RC поддерживает несколько браузеров.

Проверьте python-browsercontrol .

Кроме того, вы можете прочитать эту страницу форума (я знаю, она устарела, но она кажется чрезвычайно актуальной для вашего вопроса): http://bytes.com/topic/python/answers/45528-python-client-side-browser-script -языка

Также: http://docs.python.org/library/webbrowser.html

Пример:

 from browser import * my_browser = Firefox(99, '/usr/lib/firefox/firefox-bin') my_browser.open_url('cnn.com') 

open_url возвращается, когда документ домашней страницы open_url загружается в рамку браузера.

Возможно, это будет немного ограничительным, но py-appscript может быть самым простым способом управления браузером Applescript с Python.

Для более сложных вещей вы можете использовать PyObjC для достижения почти чего угодно – например, webkit2png – это скрипт Python, который использует WebKit для загрузки страницы и сохранения ее изображения. Вам нужно иметь хорошее понимание Objective-C и Cocoa / etc, чтобы использовать его (поскольку он просто предоставляет объекты ObjC для Python)

Экран-scaping может достичь того, чего вы хотите, с гораздо меньшей сложностью.

Проверьте модуль spynner Python.

Spynner – это программный программный модуль веб-браузера для Python. Он основан на PyQT и WebKit. Он поддерживает Javascript, AJAX и любые другие технологии, которые WebKit способен обрабатывать (Flash, SVG, …). Spynner использует JQuery. мощная библиотека Javascript, которая упрощает взаимодействие со страницами и имитацией событий.

Используя Spynner, вы сможете смоделировать веб-браузер без GUI (хотя окно просмотра можно открыть для целей отладки), поэтому его можно использовать для реализации сканеров или приемочных тестов.

См. Некоторые примеры на странице GitHub .

Попробуйте механизировать , если вам действительно не нужен браузер.

Пример:

 import re import mechanize br = mechanize.Browser() br.open("http://www.example.com/") # follow second link with element text matching regular expression response1 = br.follow_link(text_regex=r"cheese\s*shop", nr=1) assert br.viewing_html() print br.title() print response1.geturl() print response1.info() # headers print response1.read() # body br.select_form(name="order") # Browser passes through unknown attributes (including methods) # to the selected HTMLForm. br["cheeses"] = ["mozzarella", "caerphilly"] # (the method here is __setitem__) # Submit current form. Browser calls .close() on the current response on # navigation, so this closes response1 response2 = br.submit() 

Несколько приложений Mac можно контролировать с помощью OSAScript (ака AppleScript), который можно отправить с помощью команды osascript . У O'Reilly есть статья о вызове osascript из Python . Я не могу ручаться за то, что он делает именно то, что вы хотите, но это отправная точка.

Может быть, пересилил, но проверьте Marionette, чтобы контролировать Firefox. В readthedocs есть учебник :

Сначала вы запускаете экземпляр firefox с поддержкой Marionette :

 firefox -marionette 

Затем вы создаете клиента:

 client = Marionette('localhost', port=2828) client.start_session() 

Навигация f.ex. осуществляется через

 url = 'http://mozilla.org' client.navigate(url) client.go_back() client.go_forward() assert client.get_url() == url 

Оформить заказ Mozmill https://github.com/mikeal/mozmill

Mozmill – это платформа автоматизации пользовательского интерфейса для приложений Mozilla, таких как Firefox и Thunderbird. Это и аддон, и инструмент командной строки Python. Аддон предоставляет IDE для написания и запуска тестов JavaScript, а пакет Python предоставляет механизм для запуска тестов из командной строки, а также предоставляет возможность протестировать перезапуск приложения.

Взгляните на PyShell (расширение для PyXPCOM).

Пример:

 promptSvc = components.classes["@mozilla.org/embedcomp/prompt-service;1"].\ getService(Components.interfaces.nsIPromptService) promptSvc.alert(None, 'Greeting...', "Hello from Python") 

Python PyShell 0.1, Mozilla, всплывающее окно, ОК

Вы можете использовать библиотеку selenium для Python, вот простой пример (в форме unittest ):

 #!/usr/bin/env python3 import unittest from selenium import webdriver class FooTest(unittest.TestCase): def setUp(self): self.driver = webdriver.Firefox() self.base_url = "http://example.com" def is_text_present(self, text): return str(text) in self.driver.page_source def test_example(self): self.driver.get(self.base_url + "/") self.assertTrue(self.is_text_present("Example")) if __name__ == '__main__': suite = unittest.TestLoader().loadTestsFromTestCase(FooTest) result = unittest.TextTestRunner(verbosity=2).run(suite) 
Python - лучший язык программирования в мире.