perl と TAP を使用して、多くの Selenium テストを作成し、それらを *.t ファイルに保存しました。
いくつかのヘルパー関数を作成し、My::Util::SeleniumHelper などの非オブジェクト指向パッケージに入れました。
すべての関数は、このモジュールからエクスポートされます。最初は 1 つのパッケージで十分でしたが、現在では単一モジュール API に関連のない関数が多数含まれています。これらの関数は、make_sel()、head_ok()、cms_logout()、cms_login()、cms_clickthru_simple()、selenium_rc_running()、treecontrol_toggles() などで呼び出されます。
さらに、t ファイル内の多くのコード ブロックは依然として冗長であるため、.t ファイルはテンプレートのように見えます。
したがって、*.t コードをよりオブジェクト指向のデザインにしたいと考えています。
新しい API の設計方法に関するアイデアはありますか?
基本的に、誰かが巧妙な方法でセレン オブジェクトを拡張したコード例 (ここまたはインターネット上) も探しています。perl である必要はありません。
Test::WWW::Selenium オブジェクト $sel にメソッドを追加すると便利でしょうか?
$sel->my_click_ok()
$sel オブジェクトをオーバーライドする必要がありますか?, Test::WWW::Selenium::Customized クラスを Test::WWW::Selenium から派生させる
これは、 「継承よりも構成を優先する」というイディオムに違反します。
コンポジションを使用してセレンオブジェクトを別のオブジェクトにラップする必要がありますか?
$myobj->{sel}->click_ok()
以下に、さらにいくつかの要件または考えを示します。
pageObjects Pattern/Idiomも使用したいと思います。まだそうしていません。たぶんそう
$myobj->{current_page}->loginbox
また
$myobj->do_stuff($current_page->loginbox)
ほとんどの場合、基本的には、ムースの around() 修飾子のようなものをセレン メソッドに与えたいと思います。標準的なことを行いますが、前後にいくつかのことを行います。
ただし、テストはいくつかの異なるマシンで実行する必要があり、これらすべての PC に Moose とそのすべての依存関係をインストールしたくないため、ここでは Moose を使用しないことを好みます。ムースを使用することが不可能だと言っているわけではありませんが、ムース以外のオブジェクト (Test::WWW::Selenium) とムース オブジェクトを一緒に使用したことはありません。