Selenium:在隐藏时获取dom中元素的值

时间:2013-02-12 20:51:22

标签: selenium

我正在迭代ByClassName()找到的元素列表。对于该列表中的每个项目,我需要提取其子元素的文本值。我已经看到了一些使用javascript来获取值的解决方案,但我必须遗漏一些东西。在这个特定的例子中,我有一个跨度,我需要它的文本或innerhtml。我已经用Firebug验证了其中有文字。

2 个答案:

答案 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#编写了代码,我相信你的代码也是如此。