2 Stimmen

Welches ist das beste Browser-Automatisierungstool für Python?

Ich möchte ein folgendes Skript zu schreiben: eine Textdatei mit der Liste der Aktionen auf einer bestimmten Website ausgeführt werden, würde es einige Browser (IE wahrscheinlich, weil ich nichts über andere Laufwerk-able wissen) CSS-Rendering und JS ausführen Fähigkeiten zu imitieren einen Benutzer tun diese Aktionen auf einer Website.

Ich habe also gefunden diese Seite und den Abschnitt "Web-Tests" und es listet auf:

  • PAMIE
  • PYXPCOM
  • Windmühle
  • Selen

Die beiden letztgenannten lassen eine Art Server auf dem localhost laufen (was keine gut geeignete Entscheidung zu sein scheint).
Pamie hat eine der schlechtesten Dokumentationen aller Zeiten und viele "Under Construction"-Seiten auf ihrer Website, die zuletzt im Jahr 2006 aktualisiert wurde.
Und PyXPCOM scheint nicht speziell für FF entwickelt worden zu sein. Vielleicht bin ich ein schlechter Googler, aber ich habe immer noch kein anständiges Beispiel für die Verwendung von PyXPCOM für etwas wie die Verwendung von FF gefunden.

Welchen Weg zur Steuerung des Browsers würden Sie für meine Zwecke bevorzugen und warum? TIA

Update :
Ich muss in der Lage sein, das JavaScript auf der Seite zu rendern. Ich schätze, dass die Verwendung einer serverbasierten Bibliothek keine gute Lösung ist, da sie auf jeweils eine Instanz des Browsers beschränkt ist, so dass ich nicht in der Lage sein werde, z. B. 2 Browserinstanzen auf 2 verschiedene Proxys zu setzen, ohne dass ich 2 Server machen muss (ist das korrekt?).

3voto

fitzgeraldsteele Punkte 4537

Ich würde Sie ermutigen, wieder auf Selenium schauen ... das ist wirklich das, was Sie tun möchten. Müssen Sie die Seite tatsächlich in einem Browser rendern, oder nur die Navigation und das Klicken emulieren?

Mechanisieren bietet Ihnen zustandsorientiertes programmatisches Webbrowsing und könnte genau das sein, wonach Sie suchen.

2voto

Gabriele Cirulli Punkte 9998

Sie sollten versuchen Win32Com da es Ihnen die Möglichkeit gibt, Programme über ihren COM-Server anzusteuern, und wenn sie keinen haben, können Sie sie dazu bringen, einfache Aktionen auszuführen, wie z.B. das Drücken einer Taste zu emulieren oder ein Fenster vom Vordergrund in den Hintergrund und zurück zu bewegen.
Da der IE über einen COM-Server verfügt, können Sie Funktionen des IE-Python-Objekts verwenden, um ihn dazu zu bringen, Dinge in Formulare, Kontrollkästchen, Download-Dateien und fast alles, was Sie sich vorstellen können, zu schreiben.

2voto

Thierry Lam Punkte 43346

Ich bin nicht sicher, ob Qt's Webkit durch PyQt Ihr Problem lösen kann, aber ich kann zum Beispiel einen einfachen Browser mit Python auf diese Weise steuern:

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_())

1voto

PAStheLoD Punkte 907

Überprüfen Sie MozMill ist es für Firefox. Verwendet JavaScript, sollte einfacher sein als COM.

1voto

lazy1 Punkte 12416

Sie können das COM-Objekt autoit mit pywin32 verwenden.

Eine weitere Option ist die Verwendung von Selenium 2 (auch bekannt als Webdriver) Python-Bindungen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X