2013-02-12 154 views
0

我遍歷ByClassName()發現的元素列表。對於該列表中的每個項目,我需要提取其子元素的文本值。我已經看到了一些使用javascript來獲取值的解決方案,但我必須錯過一些東西。在這個特定的例子中,我有一個跨度,我需要它的文本或innerhtml。我已經用Firebug驗證過它裏面有文字。Selenium:在隱藏元素時獲取元素的值

+3

你可以發佈你的元素訪問嘗試(代碼)和你的目標html嗎? – Nashibukasan 2013-02-12 22:44:27

+0

謝謝Nashibukasan,原來要求Text屬性可能是我的問題。 – Roger 2013-02-13 16:20:43

回答

1

如果你想要的是訪問的子元素,您還可以使用XPath的//div[@class='Class']/child::div在那裏你可以改變類名和子類型。如果你想獲得所有兒童的父元素,你可以返回匹配,你的選擇如下元素的列表:

ReadOnlyCollection<IWebElement> elements = _driver.FindElements(By.XPath("//div[@class='ClassName']/child::div")); 

在這一點上,是的,如果你能訪問元素,你應該能夠訪問innerHTML。請注意,我用C#編寫了我的代碼,我相信這也是您的代碼所在。

1

事實證明,GetAttribute(「innerHTML」)不會被隱藏的HTML禁止。

public string GetChildElementTextByClassName(IWebElement element, string className) 
    { 
     string returnValue = string.Empty; 

     try 
     { 
      IWebElement childElement = element.FindElement((By.ClassName(className))); 
      if (childElement != null) 
      { 
       returnValue = childElement.GetAttribute("innerHTML").Replace(Environment.NewLine, "").Trim(); 
      } 
     } 
     catch (Exception) 
     { 

      //throw; 
     } 

     return returnValue; 
    }