2016-04-13 55 views
5

私は狂ったように感じるこのコード部分を持っています。
私はHTMLから取り出された要素を反復処理しています。
structureElementはきれいな要素を保持しているようですが、.FindElement()を実行すると最初の繰り返しから常に値が返されます。どうして? grrrrrrrr
は、ここに私のコードです:あなたが意味Xpath、中//を使用しているためだIReadOnlyCollectionの要素を反復処理するとき、FindElementは反復処理しません。

IReadOnlyCollection<IWebElement> structureElements = 
    driver.FindElements(By.XPath(".//div[contains(@id, 'PSBTree_x-auto-')]")); 
//.Where(sE => sE.FindElement(By.XPath("//img[@title]")).GetAttribute("title") != "Customer Item") 
IWebElement tmp; 
foreach (IWebElement structureElement in structureElements) 
{ 
    //if (structureElement.FindElement(By.XPath("//span//img[@title]")).GetAttribute("title").Contains("Customer Item")) 
    // continue; 
    tmp = structureElement.FindElement(By.XPath("//span[@class='cat-icons-tree']/img")); 
    ReportProgress(progress, ref r, ct, allsteps, message + tmp.GetCssValue("background")); 
    Thread.Sleep(100); 
    ReportProgress(progress, ref r, ct, allsteps, message + structureElement.Text); 
    Thread.Sleep(300); 
} 

答えて

3

は、「子孫をルートのを選択する」ので、まずそれが文書でを見つけ返すだ

あなたは、そのノードの子孫を検索したい場合は、あなたが試してみたいことがあります。

.//span[@class='cat-icons-tree']/img 

.//

を「コンテキストノードの子孫を選択する」を意味しますが、私のああ軸の感謝をhere

+0

をすべて省略形を確認することができます。私は盲目です –

関連する問題