java
  • webdriver
  • selenium-webdriver
  • 2012-04-09 15 views 1 likes 
    1

    をブロック取得私は、要素のリストからの子要素を取得しようとしましたし、代わりに、リスト内の各アイテムの リターン子要素の値のき - >それだけで 最初の項目を返します。webdriverを要素から要素が

    List<WebElement> allAccoElements = driver.findElements(By.xpath("//ul[@id='ListerContainer']//li[@class='lister-item']//div[@class='lister-item-content']")); 
    // Found 10 items 
    
    for (WebElement element: allAccoElements){ 
    System.out.println(element.findElement(By.xpath("//img[@class='image-base']")).getAttribute("id")); 
    //For loop will print "id" of first element 10 times, why I can't to get access to other Elements in list? 
    } 
    
    Print always return id of first element in list, can anyone suggest me, how I can find child element of each element in list? 
    

    私はこの問題を回避するように、次のコードを使用している場合代わりに、すべてが正常に動作します。

    List<WebElement> allAccoElements = driver.findElements(By.xpath("//ul[@id='ListerContainer']//li[@class='lister-item']//div[@class='lister-item-content']//img[@class='image-base']")); 
    // Found 10 items: 
    
    for (WebElement element: allAccoElements){ 
    System.out.println(element.getAttribute("id")); 
    //Print 10 times with different id 
    } 
    
    +6

    これは、 '/'で始まる 'findElement'のXPathセレクタを使用しているためです(HTMLのルートを指しているため、' element'のコンテキストには適用されません)。 – p0deje

    +0

    実際、他のアイテムの中に対応するアイテムを見つけるには、回避する必要があります(xpathに "//"の前にドット "。"を付けてください): ありがとうp0dejeあなたの提案! –

    +0

    喜んで助けてください。コメントを+1してこの質問に答えてください。他の人が解決策を見つけられるようにしてください。 – p0deje

    答えて

    3

    おかげで、我々は答え見つけたp0dejeする:

    は、他の内のアイテムを、対応する見つけるには、我々はそれを回避する必要がある(ドットを追加することによって、前に 『//』のxpathで「」) 。

    関連する問題