如何使用Selenium Java 2.8获取当前DOM?

时间:2011-10-10 12:30:06

标签: dom selenium junit zk

我正在使用最新版本的Selenium和chromedriver来测试ZK应用程序。

在测试期间,我想转储DOM(或其中的一部分)以帮助我找到我需要的元素(并且可能帮助那些必须维护测试的人)。

方法WebDriver.getPageSource()看起来很有前途,但它只返回服务器发送的HTML,而不是运行所有JavaScript代码后的结果。

运行JavaScript代码;我可以通过ID找到我在getPageSource()的输出中看不到的元素。所以我尝试WebElement.getText(),但这只是元素的文本,而不是元素本身或它们的属性。

是否有可能获得DOM或我是否必须在此进行锁孔手术?

1 个答案:

答案 0 :(得分:1)

我真的有同样的问题,但我发现这样做的唯一方法是ExecuteScript:

/// <summary>
        /// Gets the parentElement/Node of a particular element
        /// </summary>
        /// <param name="driver"></param>
        /// <param name="element"></param>
        /// <returns></returns>
        public static IWebElement GetElementParent(IWebDriver driver,IWebElement element)
        {
            return (IWebElement) ((IJavaScriptExecutor)driver).ExecuteScript("return arguments[0].parentNode", element);
        }

为什么By不支持By.DOM的功能我真的不知道...我怀疑它是由于需要为多个浏览器等的webdriver