2016-07-08 18 views
1

私は現在、自動テストを書くのにSeleniumを使用しています。 Dynamic Objectsを使用しているページに問題があり、PageObjectに保存しようとすると問題が発生しています。私のPageObjectクラスに、独自のスタイルのIDを動的に追加します。

私はあなたが試すことができるいくつかの提案があることを期待しています。

私が現在持っている問題は、の数に基づいて動的に作成され、その後SubPlaysという添付画像として細分されたグリッドが、開発予測ページにあることです。

オブジェクトのすべてがPlay#SubPlay#、及びColumn#によって索引付けされ、そのようなPlay1ためdivPlayBar_0、およびPlay2ためdivPlayBar_1として独特のスタイルIDを持つSubPlaysためtoggleAssetVisibility_0_ 0又はtoggleAssetVisibility_0_1、そして個々の要素はrigs_0_0_0あり、rigs_0_1_2

私はこれらを動的にPageObjectクラスに追加する方法を見つけようとしています。何か提案があれば、私は助けていただければ幸いです。

私はこれをC#でコーディングしていますが、それはJavaから変換できます。

+0

あなたの参照画像@SanjeevMenonはどこですか? –

+0

私の典型的なアプローチは、PlayオブジェクトとSubPlayオブジェクトの新しいクラスを作成することです。開発予測ページには、特定のPlayまたはページ上の既存のPlaysのリストを見つけるメソッドがあり、SubPlayオブジェクトのインスタンスを保持するPlayオブジェクトのインスタンスを作成することができます。 –

答えて

0

ページオブジェクトにすべてを格納せずに、必要なものをフェッチする方法を提供することをお勧めします。それらをすべて保存するだけで、現在必要なオブジェクトがほんの少数の場合にページ全体を掻き集めるのに時間がかかるだけでなく、StaleElementExceptionエラーが発生する可能性が高くなります。すべてをもう一度取り出す...さらに時間を取る。私は以下のようなことをするでしょう。

これらはすべてページオブジェクト内のメソッドです。グリッドなど。あなたはおそらく名前を調整する必要があります...私は私が見ることができないページを与えてあなたに合ったものにそれらを呼び出すか分からなかった。 :)

public IWebElement getPlay(String playId) 
{ 
    return driver.FindElement(By.Id("divPlayBar_" + playId)); 
} 
public IWebElement getSubPlay(String playId, String subPlayId) 
{ 
    return driver.FindElement(By.Id("toggleAssetVisibility_" + playId + "_" + subPlayId)); 
} 
public IWebElement getRig(String playId, String subPlayId, String columnNo) 
{ 
    return driver.FindElement(By.Id("rigs_" + playId + "_" + subPlayId + "_" + columnNo)); 
} 
関連する問題