我正在迭代ByClassName()找到的元素列表。对于该列表中的每个项目,我需要提取其子元素的文本值。我已经看到了一些使用javascript来获取值的解决方案,但我必须遗漏一些东西。在这个特定的例子中,我有一个跨度,我需要它的文本或innerhtml。我已经用Firebug验证了其中有文字。
答案 0 :(得分:1)
事实证明,隐藏的html不会禁止GetAttribute(“innerHTML”)。
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;
}
答案 1 :(得分:1)
如果您只想访问子元素,您还可以使用xpath的//div[@class='Class']/child::div
来更改类名和子类型。如果您想要访问父元素的所有子元素,您可以返回与您的选择器匹配的元素列表,如下所示:
ReadOnlyCollection<IWebElement> elements = _driver.FindElements(By.XPath("//div[@class='ClassName']/child::div"));
此时,是的,如果您可以访问该元素,您应该能够访问innerHTML。请注意,我已经用C#编写了代码,我相信你的代码也是如此。