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

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

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

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

10 ответов


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


проверить python-browsercontrol.

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

также: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 возвращает, когда cnn.com Домашняя страница документа загружается в рамка браузера.


может быть немного жесткими, но 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 (a.к. a. AppleScript), который можно отправить через . У о'Рейли есть статьи о вызове osascript из Python. Я не могу поручиться, что он делает именно то, что вы хотите, но это отправная точка.


может быть, подавлен, но проверьте марионеток для управления Firefox. Есть учебник в readthedocs:

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

firefox -marionette

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

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

навигация f.бывший. делается через

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, popup, OK


можно использовать 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)