2016-03-23 9 views
1

WebElementの名前を特定してWebElementのリストに割り当てる方法はありますか?次の規則使用例:これは基本的な質問ですが、多くのアプリケーションが共通の名前を持つオブジェクトのリストを持っているとして、それはすべてのテスターのためにかなり一般的なシナリオになりますようにそれはそうならばWebElementのリストを取得してそれらを識別する

@FindBy(xpath="") 
WebElement listFirstObject; 

@FindBy(xpath="") 
WebElement listSecondObject; 

W私を許して。私の場合、700以上のオブジェクトを持つコントロールリストがあり、リストから各共通のWebElementをキャプチャして個々に作成するための反復メソッドを書くことができればうれしいです。

**更なる説明のために私の質問に更新しました**情報のグリッド全体を完全に新しいものにしていますので、その背後にあるロジックを理解しようとしているので、

だから私は、私が探しています要素がグリッドデータは、私が正常に全体のグリッドを獲得してきている必要があり、例えば

@FindBy(id="ctl00_SomeGridData_ucControlList_trgControlList_ctl00") 
List<WebElement> someGridData; 

私が個別にグリッドへの新しい追加をキャプチャした場合には、そのようなのようになります:

@FindBy(id="ctl00_SomeGridData_ucControlList_trgControlList_ctl00__0") 
WebElement someGridObj1; 

@FindBy(id="ctl00_SomeGridData_ucControlList_trgControlList_ctl00__1") 
WebElement someGridObj2; 

@FindBy(id="ctl00_SomeGridData_ucControlList_trgControlList_ctl00__2") 
WebElement someGridObj3; 

あなたは、個々のグリッド要素がで終わって見ることができるように「__#」明らかに、これは無限のリストであり、私が個別にすべてのWebElementをキャプチャし、テストに使用するWebElement値を割り当てることはできません。私が尋ねようとしていることは、このリスト全体をどのように取得し、後で個々のWebElementを呼び出して、どうやってテストするのかということです。私はこれが明確になり、読んでいただきありがとうと思います。

+0

データタイプとしてリストを使用し、これを達成するためにPageFactory.initElements()を使用できます。 – illvm

+0

答えがあなたを助けましたか?そうであればそれを受け入れ、そうでなければ明確にしてください。 –

+0

私は私の質問に更新を加えましたので、うまくいけば私はよく理解できます。私は論理が初めてで、これを初めて試みるときには詳しい説明が必要です。 –

答えて

2

[OK]を、今、あなたの質問を編集したこと、それは明らかだような値を割り当てることができますループに適用されますあなたは何を知りたい。グリッドデータがtdの要素であると仮定すると、次のことができます。あなたはctl00_SomeGridData_ucControlList_trgControlList_ctl00__で始まるIDを持つすべてのtdの要素を集める(と開始を意味する)^を使用することにより

@FindBy(css = "td[id^=ctl00_SomeGridData_ucControlList_trgControlList_ctl00__]") 
List<WebElement> allGridData; 

+0

@David Baakありがとう、これは私が探していたものです!あなたはこれを拡大できますか?あなたが望むなら、私はこれを別の質問で尋ね、リンクを参照することができます。私の質問はこれです。だから、私はリストを持っており、allGridData.get(0).clickまたは何の番号インデックスでインデックスをキャプチャすることができますが、インデックス全体は整数ではありません。たとえば、いくつかの要素は次の "_ctl04_lbView"または "ctl07_hlTestPlan "文字列の残りの部分とインデックスの個々の要素を取得するにはどうすればよいですか? –

+0

ええ、あなたの質問を説明する余地があるので、新しい質問へのリンクが役立ちます:) –

+0

http://stackoverflow.com/questions/36310539/call-individual-index-of-webelement-list –

0

はい、あなたは以下のようにこれを行うことができます:

List<WebElement> mylist = driver.findElements(By.xpath("ur xpath")); 
System.out.println("Size of the list is : " +mylist.size()); 

これはあなたのマイリスト内にあるどのように多くのwebelementsあなたを与えるだろう。

は今、コンソール 上mylistというの値を印刷するようにしても、ループのためにあなたは彼らに、これは

for(int i = 0;i<mylist.size();i++){ 
    System.out.println("index of webelements in increasing order is : " + i + mylist.get(i).getText()); 

    // this will assign an index of 0 to max for the weblements in the 
    list like index 0 = for 1 webelement ,index 1 = for 2nd webelement , 
    index 2 = for 3rd webelement and so on 
} 
関連する問題