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

发布于 2024-12-09 01:42:16 字数 393 浏览 0 评论 0原文

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

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

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

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

是否有可能获得 DOM 还是我必须在这里进行锁孔手术?

I'm using the latest version of Selenium and the chromedriver to test a ZK application.

During the test, I'd like to dump the DOM (or part of it) to help me find the elements I need (and probably help people who have to maintain the test).

The method WebDriver.getPageSource() looked promising but it only returns the HTML as it was sent by the server, not the result after running all the JavaScript code.

The JavaScript code is run; I can find elements by ID that I can't see in the output of getPageSource(). So I tried WebElement.getText() but that is only the text of the elements, not the elements themselves or their attributes.

Is it possible at all to get the DOM or do I have to do keyhole surgery here?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

偏爱你一生 2024-12-16 01:42:16

我确实有同样的问题,但我发现做到这一点的唯一方法是 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 的功能我真的不知道......我怀疑它是由于需要网络驱动程序对于多个浏览器等

I have the same question really but the only way I've found to do it is 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);
        }

why the By doesnt support By.DOM with a function I don't really know...I suspect its due to the need for a webdriver for multiple browsers etc

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文