2

セレンを使用した自動テストの作成に取り組んでいます。現在、jsでいくつかのテスト関数を呼び出す機能を持たせるために、ロード後にすべてのページ/フレームでいくつかのjsコードを実行したいと考えています。ページが読み込まれた直後に実行する必要はありません。すべてのページで実行されることを確認したいだけです。

この問題を解決するために、デリゲートパターンを使用して、メソッド「get」が呼び出された後に実行するjsを追加するWebDriverの独自の実装者を作成しました。同じ方法で、現在のフレームを変更するdriver.switchTo()オブジェクトのすべてのメソッドで実行されるスクリプトを追加します。

問題は、いくつかのリンクをクリックした後、またはいくつかのjsコードを実行した後にページがリロードされた場合です。そのような場合、私のスクリプトが実行されないことは容易に理解できます。

セレンWebDriverを使用してこの動作をカバーする方法はありますか?

どんなアイデアやハックも素晴らしいです。

4

3 に答える 3

1

バックグラウンドでフィドラーを実行して、すべての HTTP メソッドをプロキシすることができます.....フィドラーでは、特定のタイプの HTTP 呼び出し GET /POST (PNG/ を除く) ごとに、サーバーからの応答を変更するカスタムルールを追加できます ( JS を挿入することにより)。 IMGなど)...私はこれを常に行っています..テストが難しいシナリオを複製します。

于 2014-12-03T18:20:57.523 に答える
0

を使用して同様のことを行いWebSocketました。アプリケーションで WebSocket サーバーを作成します。最初の の後、getサーバーexecute_scriptへの接続を開きます。ブラウザーが新しいページに移動すると、ソケット接続が閉じられます。もう一度スクリプトを実行できます。iframes をチェックする必要があり、失敗した場合は接続を再試行する必要があるため、全体が少し複雑になります。

これはFirefox、Chromeでうまく動作させることができました。Edge/IE でも動作するはずです。

于 2016-08-26T10:18:48.447 に答える
0

私はこれをサーバー側で行います:Seleniumが実行されているときにのみjsコードを追加する汎用サーブレットですべてのサーブレットを拡張します(Seleniumの起動時にサーバーに静的変数を設定します)

于 2012-05-23T12:38:51.483 に答える