2016-12-15 7 views
0

このウェブサイトは面白い構造をしていますが、実際にセレンを使って欲しいものを手に入れましたが、2度目の試みでは私が望むデータを取得できません。これは、それがどのようになるです: -liタグ情報を取得できません

第一(正しい情報)をお試しください: - 銀行名リスト、 銀行口座と残高

第二(間違った情報)をお試しください: - 銀行振込方法を、 銀行名簿

私はdivが突然別の位置にシフトされていることに気付きました。私は私が欲しい情報を抽出するために、このXPathを使用しています: -

//div[12]/div[1]/ul[1]/li['.$x.'] 

は今、私はそれはdivのIDにベースを抽出したいので、私はこのXPathのを思い付いた: -

//*[@id="idBnk_panel"]//div/ul/following::li 

が、必要な情報を抽出するために適切に機能しません。どのようにこの構造に基づいてliタグからの情報をつかむための任意のアイデア?私が理解

<div id="something_here"> 
    <div> 
     <ul> 
      <li></li> 
      <li></li> 
      <li></li> 
     </ul> 
    </div> 
</div> 
+0

コードで使用する前に、まずブラウザから正しいと思われるxpathをテストすることができます。 chromeまたはfirefoxでコンソールを開き、$ x( '// xpath/here')と書いてください。xpathパスが正しい場合は要素を返します。 – mosaad

答えて

0

あなたはすべての3つの<li>タグデータを抽出したいです。そこでここではそのためのコードです -

List<WebElement> element = driver.findElements(By.xpath("//div[@id='something_here']/div/ul/li")); 
    for(WebElement iterate:element) 
    { 
     System.out.println(iterate.getText()); 
    } 

は、ここで私はちょうど<li>タグのテキストを取得、getText()方法を使用しまし」。要件に応じて操作を行うことができます。

0

使用しているxpathが間違っている // * [@ ID = "idBnk_panel"] // DIV/UL /以下::李

あなたが示したHTMLあたりとして正しいxpathが ある// div要素の文字列を使用し、その後 [index_number_as_required]/DIV/UL /李[ID = 'something_here' @]またはあなたが直接 // divの[@ ID = 'something_here']を使用することができます。//李[index_number_as_required]

とテキスト= driver.findElement(By.xpath(// div [@ id = 'something_here'] // li [index_number_as_required]))。getText();

0

一部の動的データ表示のためにxpathが時々変化する場合、divの "id"が利用可能であるため、以下のコードも使用できます。

List<WebElement> mainLabels = new ArrayList<WebElement>(); 
mainLabels = driver.findElement(By.id("something_here")).findElements(By.tagName("li")); 
//mainLabels list contains all the li elements 

//Then you can access the texts either this way 
mainLabels.get(0).getText();//This will give you the text that is in first li 
mainLabels.get(1).getText();//This will give you the text that is in second li 

//OR this way 
for (int i = 0; i < mainLabels.size(); i++) { 
    System.out.println(mainLabels.get(i).getText()); 
} 
関連する問題