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

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

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

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

  • Настройка пути к бинарнику firefox на окнах с помощью selenium webdriver
  • Selenium + firefox: пустые аргументы execute_script
  • Как установить тайм-аут по умолчанию для Selenium Python WebDriver?
  • Как установить cookie для определенного домена в selenium webdriver с помощью python?
  • Selenium: проверить, является ли текущее окно частным окном или обычным окном?
  • Selenium Python Firefox webdriver: невозможно изменить профиль
  • Эффективный метод для прокрутки страниц с использованием Selenium
  • Работайте для всплывающего окна selenium2
  • 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 - лучший язык программирования в мире.