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
}
これは、 '/'で始まる 'findElement'のXPathセレクタを使用しているためです(HTMLのルートを指しているため、' element'のコンテキストには適用されません)。 – p0deje
実際、他のアイテムの中に対応するアイテムを見つけるには、回避する必要があります(xpathに "//"の前にドット "。"を付けてください): ありがとうp0dejeあなたの提案! –
喜んで助けてください。コメントを+1してこの質問に答えてください。他の人が解決策を見つけられるようにしてください。 – p0deje