私はいくつかの調査を行い、セレンIDEで多くのことをいじりましたが、これを行う方法はまだ見つかりません。
私がやろうとしているのは、基本的に追加のサポートを追加し、いくつかのコマンド、つまり isTextPresent と addSelection の既存の実装を変更することです。基本的に、WebDriver JUnit エクスポーターのほとんどの機能は問題なく動作しているため、そのままにしておくことができますが、カスタマイズされたメソッドの戻り値をいくつか追加したいだけです。
たとえば、 isTextPresent() のエクスポーターを次のように変更したいと思います。
// Warning: waitForTextPresent may require manual changes
for (int second = 0;; second++) {
if (second >= 60) fail("timeout");
try { if (driver.findElement(By.cssSelector("BODY")).getText().matches("^[\\s\\S]*SOME INTERESTING TEXT[\\s\\S]*$")) break; } catch (Exception e) {}
Thread.sleep(1000);
}
これに:
SeleniumHelperUtil.isTextPresent("SOME INTERESTING TEXT");
これは、すべての Selenium テストで使用する、カスタマイズした SeleniumHelperUtil Java クラスを使用できるようにするためです。これは大規模で複雑なワークフロー プロジェクトであるため、最終的に何百ものテストが必要になります。テスターにテストケースを作成してもらい、WebDriver を使用して JUnit4 テストにそれらを Java にエクスポートしてもらいたいと考えています。次に、自動 Hudson ビルド サーバーが新しいテストを毎晩実行する CVS にチェックインできます。私たちの開発者からの介入を最小限に抑えてこれを実現したいと考えています (今のところ、実際には私だけの ATM であり、彼らが 1 日 30 時間制を発明するまで時間がありません :))。
私が試したこと
オプションを含む webdriver.js のすべてのコードをカット アンド ペーストして、カスタム エクスポーターを作成してみました。また、waitFor 関数を次のように変更しました。
function waitFor(expression) {
return "SeleniumHelperUtil.isTextPresent(" + expression ")";
}
残念ながら、私が戻ってきたのは WebDriver.js 実装だけです。
// Warning: waitForTextPresent may require manual changes
for (int second = 0;; second++) {
if (second >= 60) fail("timeout");
try { if (driver.findElement(By.cssSelector("BODY")).getText().matches("^[\\s\\S]*SOME INTERESTING TEXT[\\s\\S]*$")) break; } catch (Exception e) {}
Thread.sleep(1000);
}
私は Selenium と Firefox 13 のバージョン 1.9.1 を使用しています (作業制限のため、thinapp 実装では、明らかに完全にインストールされたバージョンを持つことはできません)。
これで、xpi ファイルの WebDriver-Junit4.js ファイルのコードの一部を見つけたので、それを変更して、カスタム コードでプラグインを再構築できましたが、私と同じように selenium-ide を介してそれを行うだけでよいでしょう。私がそこにいるとき、他に何が壊れるかわからない。