【问题标题】:Ruby - Watir - Get HTML with interpreted js [closed]Ruby - Watir - 使用解释的 js 获取 HTML [关闭]
【发布时间】:2014-04-14 12:13:22
【问题描述】:

对我的 ruby​​ 文件执行此操作后:

 browser = Watir::Browser.new
 browser.goto 'anyWebsite.com'

 puts browser.html > "~/index.html"

我得到了一个 HTML 代码,但带有未解释的 JavaScript。 例如,我得到这样的东西:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>

我的问题是,js解释后如何获取HTML?

【问题讨论】:

  • 这不是未解释的 JavaScript。这只是一个参考。 JavaScript 由浏览器获取和解释。
  • 好的,感谢这个精度(我是 Web 开发的初学者)。那么:在浏览器获取并解释它之后,我怎样才能得到结果 HTML?

标签: javascript html ruby watir


【解决方案1】:

当您使用html 方法时,您将获得当前的 DOM - 即 javascript 解释后的 HTML。

以一个简单的包含 javascript 的 html 页面为例,添加一个按钮:

<html>
  <body>
    <script>
      var btn=document.createElement("BUTTON");
      document.body.appendChild(btn);
    </script>
  </body>
</html>

当你转到页面并获取浏览器html时,你可以看到它还包括由javascript添加的按钮(见倒数第二行的末尾)-即html是在javascript被解释后的:

browser.html
#=> <html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>
#=>     <script>
#=>       var btn=document.createElement("BUTTON");
#=>       document.body.appendChild(btn);
#=>     </script><button></button>
#=> </body></html>

同样可以看到,特定元素的html也是经过解释的:

browser.body.html
#=> <body>
#=>     <script>
#=>       var btn=document.createElement("BUTTON");
#=>       document.body.appendChild(btn);
#=>     </script><button></button>
#=> </body>

【讨论】:

  • 我了解更多,所以我的问题已经改变:我可以用
  • 如果您的页面是静态的,则不需要任何脚本。但是我不确定我是否真的理解你的问题,因为你现在谈论的是创建一个页面而不是测试页面的 Watir。我建议你举一个更具体的例子来说明你想要完成的事情。
  • 例如,我需要像这样的网站:stackoverflow.com 并制作完全相同但完全静态的网站。所以我试图从每个页面中获取 html(使用 watir),仅此而已。但是,由于像这样的javascript: 我没有相同的结果如果我在浏览器中打开 html 文件(没有互联网连接)。但是如果我得到 jquery.min.js 中的代码并将其放入我的 html 文件中,我会得到相同的结果吗?
  • 你会得到相同的结果。例如,所有 jQuery UI 小部件都会正确呈现。但是,异步检索的数据(例如一些自动完成)将不存在。
  • 好的,非常感谢您的所有解释。对于异步数据,我会找到解决方案(在更糟糕的情况下,我会使用脚本重新生成 HTML)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-22
  • 2017-02-19
  • 2018-04-17
  • 1970-01-01
  • 2014-08-11
  • 2022-08-18
  • 2011-06-13
相关资源
最近更新 更多