2

次のスクリプトを書きたいと思います: 特定のサイトで実行されるアクションのリストを含むテキスト ファイルが与えられた場合、いくつかのブラウザー (おそらく IE、他の駆動可能なものについては何も知らないため) を使用します。CSS レンダリングとサイトでこれらのアクションを実行しているユーザーを模倣する JS 実行機能。

だから私はこのページとその「ウェブテスト」セクションを見つけました、そしてそれはリストします:

  • パミー
  • PYXPCOM
  • 風車
  • セレン

後者の 2 つは、ローカルホストである種のサーバーを実行します (これは適切な決定ではないようです)。
Pamie には、2006 年に最後に更新されたサイトに史上最悪のドキュメントと多くの「建設中」ページがあります。
また、PyXPCOM は FF 用に作成されたものではないようです。私は下手な Google 社員かもしれませんが、FF を使用するような目的で PyXPCOM を使用する適切な例はまだ見つかりませんでした。

私の目的のために、ブラウザーをどのように誘導することをお勧めしますか? また、その理由は何ですか? ティア

更新:
ページに JavaScript をレンダリングできるようにする必要があります。サーバーベースのライブラリを使用することは、一度に 1 つのブラウザー インスタンスに制限されているため、良い解決策ではないと思います。たとえば、2 つのブラウザー インスタンスを 2 つの異なるプロキシに設定することはできません。 2 サーバー (これは正しいですか?)。

4

5 に答える 5

3

Selenium をもう一度検討することをお勧めします...それが本当にやりたいことです。実際にブラウザーでページをレンダリングする必要がありますか?それともナビゲーションとクリックをエミュレートするだけですか?

Mechanizeはステートフルなプログラムによる Web ブラウジングを提供し、あなたが探しているものかもしれません。

于 2009-11-20T22:29:56.347 に答える
2

PyQt を介した Qt の Webkit が問題を解決できるかどうかはわかりませんが、通常、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_())
于 2009-11-20T20:09:47.657 に答える
2

COMサーバーを使用してプログラムを駆動する可能性があるため、 Win32Comを試す必要があります.COMサーバーがない場合は、キーの押下をエミュレートしたり、ウィンドウをフォアグラウンドからバックグラウンドに移動したり、バックグラウンドに移動したりするなどの簡単なアクションを実行できます。 .
IE の場合、COM サーバーがあるため、IE の Python オブジェクトの関数を使用して、フォームへの書き込み、チェック ボックスの作成、ファイルのダウンロードなど、想像できるほとんどすべてのことを実行できます。

于 2009-11-20T17:34:46.837 に答える
1

pywin32を使用してautoitCOMオブジェクトを使用できます。

もう1つのオプションは、Selenium 2(別名webdriver)pythonバインディングを使用することです。

于 2009-11-20T22:07:15.997 に答える
1

MozMillをチェックしてください。これは Firefox 用です。JavaScript を使用します。COM よりも簡単なはずです。

于 2009-11-20T18:43:09.003 に答える