【问题标题】:Does XPath in Selenium run against DOM or HTML file?Selenium 中的 XPath 是否针对 DOM 或 HTML 文件运行?
【发布时间】:2014-11-11 15:53:57
【问题描述】:

我正在创建一个用于分析网页的库。目前我使用 Selenium 通过 xpath 访问网页中的元素。

我正在考虑用一些离线 xpath 工具替换 Selenium。但是,在考虑到它是否会起作用之后,我开始怀疑它是否会起作用,因为 javascript 可能正在改变 DOM。在这种情况下,不可能使用不呈现网页的 xpath 工具。

Selenium 是针对 DOM 或实际的 HTML 文件运行 xpath 吗?

【问题讨论】:

    标签: javascript html dom selenium xpath


    【解决方案1】:

    Selenium 实际上是 delegates the xpath search 到浏览器本身:

    Selenium 将 XPath 查询委托给浏览器自己的 XPath 引擎,所以 Selenium 支持 XPath 支持任何浏览器 支持。

    当然,您始终可以获取页面的源代码并使用任何其他工具在其中解析和搜索。我不明白它的意义,但你可以。

    【讨论】:

    • 关键是速度。目前我的图书馆依赖于网络延迟。使用离线工具可以更快地进行分析。但与此同时,我不会分析用户看到的内容。
    • @Pithikos 好吧,我个人从来没有将它从 selenium 委托给任何其他工具。但是,说到速度,无论如何您都需要打开一个页面并保存源代码 - 所以网络部分仍然存在,对吧?
    • 是的。只是我不喜欢这样一个事实,即每次我想测试某些东西时,我都必须等待 Selenium 打开浏览器并加载页面,而我唯一要测试的是 xpath。它减慢了我的发展速度..
    • @Pithikos 好吧,这是使用真实浏览器的权衡。您可以考虑使用的一个选项是无头浏览器,例如 PhantomJS - 这确实是一种更快的方式。
    • 所以我现在都尝试了,得到了一些有趣且相当奇怪的结论。对于一个简单的网页有 72 个 xpath,PhantomJS 需要 15.3 秒Chrome 需要 3.8 秒
    【解决方案2】:

    Selenium 针对当前 DOM 运行。这包括 XPath 表达式,否则将无法自动化单页应用程序。

    【讨论】:

      猜你喜欢
      • 2022-08-24
      • 2013-09-29
      • 2018-12-08
      • 1970-01-01
      • 1970-01-01
      • 2019-02-20
      • 1970-01-01
      • 2019-06-29
      • 2013-09-20
      相关资源
      最近更新 更多