2

Selenium Flex で既に再コンパイルされた Flash アプリケーションがあります。
FlashFirebug を使用して、そのアプリのロケーターを見つけることができました。Selenium RC で Selenium flex API を使用してスクリプトを作成しました。スクリプトを実行すると、これらのロケーターは特定されましたが、アクションを実行できませんでした。
Selenium IDE では、これらのロケータも識別できましたが、クリックなどのアクションは実行できませんでした。ここでは、user-extension.js を IDE にアタッチしました。

4

2 に答える 2

3

これは、問題の根本原因を見つける方法です。

  • *.swf (フレックス アプリケーション) がSelenium-Flex API *.swc ライブラリ に対して正しくコンパイルされていることを確認してください。
    • Javascript デバッグ コンソールを備えた Web ブラウザーで swf を実行します (例: Firefox with Firebug )。
    • Javascript コンソールを使用して、DOM ID を使用して swf への参照を取得します。document.getElementById(swfId)
    • ここで、Selenium 用に公開されているテスト コマンドの 1 つを実行して、Flex-Selenium が swf OK にコンパイルされたことをテストします。これらのコマンドは、前の手順で取得したオブジェクトに対して実行される Javascript 関数です。詳細については、Javascript から Flex アプリへのアクセスを参照してください。Flex-Selenium が公開するすべてのコマンドは、 Commmands.asの Flex-Selenium ソースにあります。たとえば、doFlexMouseDownExternalInterface.addCallback("doFlexMouseDown", mouseCommands.doFlexMouseDown);という名前の Javascript 関数( MouseCommands.asで定義) が swf で公開されていることを意味します。Javascript 式を実行すると、関数として評価される必要があります(未定義ではありません)。typeof document.getElementById('swfId').doFlexMouseDown)。document.getElementById(swfId).doFlexClick('idOfFlexObject')また、エラーなしでこの関数を呼び出すことができるはずですidOfFlexObject。 は、swf 内のオブジェクト (ボタンなど) の ID です。
  • これで、Selenium を介して swf に対して呼び出すのに問題があるコマンドを見つけ、Javascript デバッグ コンソールでエラーがないか swf に対してそれらをテストできるはずです。
    • swf が実際に swf に対して正しくコンパイルされている場合、swf に対して対応する Javascript 関数を呼び出したときにエラーが発生する可能性が高くなります (Javascript 関数自体は正しく定義され、Javascript に公開されていますが、呼び出されたときの swf)。次に、Flex-Selenium のソースをダウンロードし (前のハイパーリンクを参照)、このソースを検索パスに指定して Flex デバッガーを swf に接続することで、このエラーの原因を見つけることができます。失敗しているコマンドの実装にブレーク ポイントを配置します。私自身の経験では、Flex-Selenium ソースの小さなバグをカスタマイズして修正する必要がありました。
    • Javascript デバッグ コンソールでエラーが見られなかった場合は、Selenium RC が swf に対してコマンドを実行できなかったスタック トレースを投稿する必要があります。 )が問題です。
于 2012-12-13T04:33:44.610 に答える
0

SFAPI (Slenium Flex API) を介してフレックス アプリケーションをクリックするのは非常に簡単です。SFAPI フォルダにある SeleniumFlexAPI.swc ファイルを使用してフレックス コードをコンパイルする必要があります。SFAPI のこれらのファイルについては、次の手順に従う必要がありますここを参照してください

または、こちらの例を参照してください

于 2014-06-03T10:49:43.887 に答える