Управление браузером с помощью Python на Mac - PullRequest
9 голосов
/ 18 апреля 2010

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

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

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

Ответы [ 10 ]

7 голосов
/ 18 апреля 2010

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

4 голосов
/ 18 апреля 2010

Выезд 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 загружен во фрейм браузера.

2 голосов
/ 14 мая 2010

Оформить spynner Модуль Python.

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

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

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

2 голосов
/ 18 апреля 2010

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

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

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

2 голосов
/ 18 апреля 2010

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

Пример:

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()
1 голос
/ 17 сентября 2015

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

Сначала вы запускаете экземпляр 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
1 голос
/ 18 апреля 2010

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

0 голосов
/ 29 мая 2017

Вы можете использовать библиотеку 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)
0 голосов
/ 26 января 2011

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

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

0 голосов
/ 18 апреля 2010

Взгляните на 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...