Я ищу способ программно управлять браузером на Mac (т.е. Firefox или Safari или Chrome/-ium или Opera, но не IE) использование Python.
Действия, которые я должен включать следующие ссылки, проверяя, существуют ли элементы на странице и отправляющих формах.
Какое решение Вы рекомендовали бы?
Взгляните на PyShell (расширение PyXPCOM).
Пример:
promptSvc = components.classes["@mozilla.org/embedcomp/prompt-service;1"].\
getService(Components.interfaces.nsIPromptService)
promptSvc.alert(None, 'Greeting...', "Hello from Python")
Может быть немного ограничивающим, но py-appscript может быть самым простым способом управления браузером с поддержкой Applescript из Python.
Для более сложных задач вы можете использовать PyObjC практически для чего угодно - например, webkit2png - это сценарий Python, который использует WebKit для загрузки страницы и сохранения ее изображения. Вам необходимо иметь хорошее представление о Objective-C и Cocoa / etc, чтобы использовать его (поскольку он просто предоставляет объекты ObjC для Python)
Масштабирование экрана может достичь желаемого с гораздо меньшей сложностью.
Некоторыми приложениями Mac можно управлять с помощью OSAScript (он же AppleScript), который можно отправить с помощью команды osascript
. У О'Рейли есть статья о вызове osascript
из Python . Я не могу поручиться за то, что он делает именно то, что вы хотите, но это отправная точка.
Мне нравится Selenium , его можно использовать в сценариях через 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 загружается во фрейм браузера.
Попробуйте механизировать , если вам на самом деле не нужен браузер.
Пример:
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()
Посмотрите spynner модуль Python.
Spynner - это программный модуль веб-браузера с отслеживанием состояния для Python. Он основан на PyQT и WebKit. Он поддерживает Javascript, AJAX и все другие технологии, которые может обрабатывать! WebKit (Flash, SVG, ...). Spynner использует JQuery. мощная библиотека Javascript, которая упрощает взаимодействие со страницами и моделирование событий.
Используя Spynner, вы можете смоделировать веб-браузер без графического интерфейса пользователя (хотя окно просмотра может быть открыто для целей отладки), поэтому его можно использовать для реализации поисковых роботов или инструментов приемочного тестирования.