3

GEBの使用私はページオブジェクトパターンを使用して、さまざまなページに関する情報を静的にカプセル化していました。

次に、GEBコードをリファクタリングして別のクラスから使用できるようにし、メソッド呼び出しを使用して一般的なコマンドをカプセル化できるようにしました。

たとえば、適切なGEBコードを呼び出してテストしているWebサイトにログインするメソッドlogin()があります。次に、TestHelperクラスのメソッド呼び出しを使用して他の一般的な関数を作成します。

これらの一般的な機能を、それらが作用するページに移動したかったのです。たとえば、検索ページには検索方法があり、ログインページにはログイン方法があります。このようにして、複数のGEBプロジェクトで使用するためのすべての共通機能を備えたページのライブラリを構築できます。これを行うには、各ページにgeb.Browserのハンドルが必要です。したがって、テストセットアップで各ページをインスタンス化する必要があります。そうすることで、標準のページオブジェクトパターンを使用できなくなります。

to ReviewQueuePage
assert at(ReviewQueuePage)

上記のコードは、オブジェクトに静的な方法でアクセスできなくなったため、nullポインターをスローします。つまり、コードを次のように変更する必要がありました。

go ReviewQueuePage.url

これにより、クラスをページとして使用するすべての機能が削除されます。

ページの動作が変わらないように、各ページのデータをカプセル化するためのソリューションはありますか?

4

2 に答える 2

5

このリソースはあなたにとって興味深いかもしれません。http://adhockery.blogspot.com/2010/11/encapsulating-page-state-and-actions-in.html . gitにも例があります。

これも役に立つかもしれない

于 2011-05-13T15:45:05.987 に答える
1

私は少し混乱しています。複数のページで共通のコードを共有する方法をお探しですか? これはあなたの質問を何度か読んだ後の印象ですが、よくわかりません。「共通機能」について言及しました。まあ、一般的なコンポーネントは、Module オブジェクトを使用してカプセル化できます。共通のコンポーネントを使用する各ページでは、ページ オブジェクト内のモジュール オブジェクトを参照するだけです。

于 2011-05-13T13:25:49.917 に答える