Управление браузером с помощью 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) 
  • Почему ответ Селена не имеет сеанса?
  • Selenium change firefox браузерный язык python mac
  • Драйвер Selenium firefox снимает скриншот окна (не полноэкранный)
  • Можно ли установить временной интервал для теста Селена?
  • Управление вкладками firefox в селене
  • Firefox не восстанавливает соединение с сервером событий
  • Selenium Python Firefox webdriver: невозможно изменить профиль
  • Firefox Build не работает с Selenium
  • Как установить прокси-серверы вроде этого «user: pass@6.6.6.6: 8043» в FirefoxDriver of Selenium 2?
  • Selenium Webdriver останавливается с
  • webbrowser.get («firefox») на Mac с Firefox «не смог найти исполняемый браузер»
  •  
    Interesting Posts for Van-Lav

    Ошибка компилятора Django с компиляцией SASS (-scss Invalid Option)

    Графический график Matplotlib от значений в pandas DataFrame

    В numpy, что делает выбор с помощью ?

    Изменение python по умолчанию на другую версию

    Алгоритм генерации следующего элемента из последовательности, путем нахождения шаблона

    Обновление аннотаций в Matplotlib с помощью кнопок

    Python URLRetrieve Limit Rate и возобновить частичную загрузку

    Как получить сертификат SSL-ответа от запросов в python?

    Создайте «нечеткую» разницу двух файлов в Python, с приблизительным сравнением поплавков

    Десятичная точность SQLAlchemy

    Кто-нибудь сочетал soap.py или пеной с python-ntlm?

    Автоматическое обрезание изображения с помощью python / PIL

    PyQt4: Как я могу переключить поведение «Stay On Top»?

    Python: получить выход из командной строки, которая выходит с ненулевым кодом выхода

    UnboundLocalError: локальная переменная 'a', на которую ссылается перед присваиванием

    Python - лучший язык программирования в мире.