2016-06-22 17 views
0

と子ノードを持つXMLを反復処理する必要があるxmlは、私が持っている同じ名前

<CommonTestData> 
<GiftCards> 
    <GiftCard> 
     <cardnumber>7777016774730834</cardnumber> 
     <number>1815</number> 
    </GiftCard> 
    <GiftCard> 
     <cardnumber>7777016774687937</cardnumber> 
     <number>6256</number> 
    </GiftCard> 
</GiftCards> 

私はこれらのxmlを反復して値を読み取るとSelenium Webアプリケーションに入力し、ギフトカードかどうかを確認する必要があります適用量はゼロより大きい。 If the amount applied is zero then try another card . If the amount applied is greater than zero then break the loop

私のコードの何かが、私は繰り返し処理できるように、私はGetValueメソッドのためimplementaionが必要

for (int i=0;i<xmlvalue.getNodeCount("GiftCard", "CommonTestData.xml");i++){ 
      //giftcardaccordian.click(); 
      giftcardnumber.sendKeys(xmlvalue.getValue("cardnumber"+i, "GiftCard", "CommonTestData.xml")); // I need code for getvalue function so that i can iterate through 
      giftcardpin.sendKeys(xmlvalue.getValue("cardnumber"+i, "GiftCard", "CommonTestData.xml")); 

      giftcardapplybutton.click(); 
      try{ 
       if(appliedgiftcardamount.getText()!="$0"){ 
        break; 
       } 
      }catch (Exception e){ 
       Assert.fail("Cannot apply reward certicate"); 
      } 
     } 

のように見えます。今の実装は次のようなものです

public String getValue(String csstagname, String Elementname, String xmlfilename) { 
    String eElement1; 

    try { 
     String path = "config/XML/" + xmlfilename; 
     File fXmlFile = new File(path); 
     DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); 
     DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); 
     Document doc = dBuilder.parse(fXmlFile); 
     doc.getDocumentElement().normalize(); 
     NodeList nList = doc.getElementsByTagName(Elementname); 

     for (int temp = 0; temp < nList.getLength(); temp++) { 

     Node nNode = nList.item(temp); 
     if (nNode.getNodeType() == Node.ELEMENT_NODE) { 
      eElement1 = csstagname; 
      Element eElement2 = (Element) nNode; 

      value = (getTagValue(eElement1, eElement2)); 

     } 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } finally { 

     return (value); 
    } 
    } 
+0

あなたの質問は、本当にセレンとは関係ありません。そのタグを削除する必要があります。 – JeffC

答えて

0

あなたのやっていることは可能ですが、XMLの精神ではありません。あなたはXMLファイルを制御しますか?それらを一緒にバインドするためにカードnnumberと数は、独自の包括的なタグを持つようにフォーマットを変更:numberでタグ付けされたすべてのノード、cardnumberでタグ付けされたすべてのノードを抽出し、

<CommonTestData> 
    <GiftCards> 
     <GiftCard> 
      <cardnumber>7777016774730834</cardnumber> 
      <number>1815</number> 
     </GiftCard> 
     <GiftCard> 
      <cardnumber>7777016774687937</cardnumber> 
      <number>6256</number> 
     </GiftCard> 
    </GiftCards> 
</CommonTestData> 

あなたは形式を制御しない場合は、両方にアクセス同じインデックスを持つ配列。

+0

はいXML形式を変更できます。はい、この1つ私はこれを変更します、よく見えます – SurajSr

関連する問題