そこで、他の Webdriver フレームワーク アーキテクトからフィードバックを得たいと思っていた興味深い難問があります。現在、私はかなり標準的な実行モデルに従います。
- ベースオブジェクト
- pageobject (baseobject を拡張)
- Junit testobject (1 つまたは複数の pageobject を参照)
pageobjects 内で、findBy UI マッピングを変数として定義し、その pageobject 用に記述したさまざまなメソッド内でそれらを参照することにしました。これは非常にうまく機能します。ただし、50 個の個別のハイパーリンクが存在する可能性がある場合に、ページ (およびそれぞれのページオブジェクト) のメソッド設計をどのように処理するかについて、私が頭を悩ませている項目があります。
これまでの私の傾向と設計は、作成したほとんどのページオブジェクトのリンクごとにメソッド (実際にはサービスと考えています) を作成して、@Test で必要なメソッドを呼び出すだけで完了できるようにすることでした。これにより、テストのメンテナンスの可能性がなくなります...私が知っている標準的な方法です。しかし、私は今決めようとしています...ページオブジェクトのリンクごとに1つずつ、50個のメソッドを作成することは理にかなっていますか、それとも私の希望に反して、テスト自体からリンクテキストを渡し、渡されたパラメータを使用してfindByを構築します。
一方では page オブジェクト内のコードはかなり少なくなりますが、他方ではテストがより脆弱になります。これらのリンクは、何百ものテストで参照される可能性があります。
これが私のモデルの簡単な例です:
classname extends baseobject{
By someLocator = By.linkText("some text");
By someOtherLocator = By.linkText("some other text");
By andAnotherLocator = By.id("someid");
public void someLinkMethod(){
driver.findElement(someLocator).click();
}
public void someOtherLinkMethod(){
driver.findElement(someOtherLocator).click();
}
public void someidMethod(){
driver.findElement(andAnotherLocator).click();
}
}
というわけで質問を終わります。このモデルは、テスト設計に最適です。私のサービス (メソッド) は分離されており、簡単に保守できます。しかし、上に示したようにリンクの UI マッピングが 2 つではなく 50 ある場合はどうすればよいでしょうか? 私は次のデザインをいじりましたが、@Test は本当に嫌いです。
public void selectFromLeftBar(String barItem){
driver.findElement(by.linkText(barItem)).click();
}
どんな考えでも大歓迎です!