2009-11-20 6 views
2

Я хочу написать следующий скрипт: для текстового файла со списком действий, которые должны быть выполнены на определенном сайте, он будет использовать некоторые браузеры (возможно, IE, потому что я ничего не знаю о других способных к переносу) CSS рендеринга и JS, чтобы имитировать пользователя, выполняющего эти действия на сайте.Какой лучший инструмент для автоматизации браузера для Python?

Так я нашел this page и в разделе "Веб-тестирование" из него, и он перечисляет:

  • Pamie
  • PYXPCOM
  • Мельница
  • Selenium

Последняя два запускают какой-то сервер на локальном хосте (что, похоже, не подходит для решения).
У Pamie есть своя худшая документация, когда-либо и на страницах «Under Construction» на своем сайте последнее обновление в 2006 году.
И PyXPCOM создается не специально для FF. Возможно, я плохой Googler, но я все еще не нашел достойного примера использования PyXPCOM для чего-то вроде использования FF.

Какой способ руководства браузером вы предпочитаете для своих целей и почему? ТИА

Update:
мне нужно, чтобы иметь возможность оказывать JavaScript на этой странице. Я предполагаю, что использование какой-либо серверной библиотеки не является хорошим решением, поскольку оно ограничено одним экземпляром браузера за раз, поэтому я не смогу, например, установить 2 экземпляра браузера на 2 разных прокси, не делая 2 сервера (это правильно?).

+1

Что случилось с запуском сервера на localhost? –

ответ

1

Вы можете использовать AutoIt COM объект, используя pywin32 ,

Другой вариант - использовать привязки python selenium 2 (aka webdriver).

+0

Кажется, что webdriver - лучший вариант – Fluffy

1

Вы должны попробовать Win32Com, поскольку он дает вам возможность управлять программами с помощью своего COM-сервера, и если у них их нет, вы можете заставить его выполнять простые действия, такие как эмулирование нажатия клавиши или перемещение окна с переднего плана на задний план и обратно.
В случае IE, поскольку он имеет COM-сервер, вы можете использовать функции объекта IE Python, чтобы заставить его писать вещи в формах, флажках, загружать файлы и почти все, что вы могли себе представить.

1

Отъезд MozMill, это для Firefox. Использование JavaScript, должно быть проще, чем COM.

2

Я не уверен, если Webkit Qt через PyQt может решить вашу проблему, но я обычно контролировать простой браузер с Python таким образом, например:

import sys 
import time 

from PyQt4.QtCore import * 
from PyQt4.QtGui import * 
from PyQt4.QtWebKit import * 

app = QApplication(sys.argv) 

web = QWebView() 

settings = web.settings() 
settings.setAttribute(QWebSettings.PluginsEnabled, True) 
settings.setAttribute(QWebSettings.JavaEnabled, True) 
settings.setAttribute(QWebSettings.JavascriptCanOpenWindows, True) 
settings.setAttribute(QWebSettings.JavascriptCanAccessClipboard, True) 
settings.setAttribute(QWebSettings.DeveloperExtrasEnabled, True) 
settings.setAttribute(QWebSettings.ZoomTextOnly, True) 


settings.setOfflineStoragePath('.') 
settings.setIconDatabasePath (".") 

url = 'http://stackoverflow.com' 

web.load(QUrl(url)) 
web.show() 

sys.exit(app.exec_()) 
3

Я бы посоветовал вам снова взглянуть на Selenium ... это действительно то, что вы хотите сделать. Вам действительно нужно отображать страницу в браузере или просто эмулировать навигацию и нажимать?

Mechanize дает вам программный просмотр в режиме реального времени и может быть тем, что вы ищете.