当前位置: 首页 > 面试题库 >

Java Selenium:如何在不首先加载页面的情况下获取网页的HTML?

荆鸿畅
2023-03-14
问题内容

使用Selenium WebDriver for Java,是否可以在给定URL的情况下获取网页的HTML?

我知道,一旦在浏览器中加载了网页,就可以使用WebDriver.getPageSource()获得HTML。但是,为了提高效率,是否可以在不先将页面加载到浏览器中的情况下获取HTML?


问题答案:

您可以使用无头浏览器来实现。

无头浏览器是没有图形用户界面的Web浏览器。 该程序的行为就像浏览器一样,但是不会显示任何GUI。

无头浏览器通常用于以下情况:-

  • 您有一个中央构建工具,上面没有安装任何浏览器。因此,要在每次构建后进行基本的健全性测试,您可以使用无头浏览器来运行测试。

  • 您要编写一个爬虫程序,该爬虫程序遍历不同页面并收集数据,无头浏览器将是您的选择。因为您真的不在乎打开浏览器。您所需要的只是访问网页。

  • 您想在同一台计算机上模拟多个浏览器版本。在那种情况下,您将要使用无头浏览器,因为它们大多数都支持模拟不同版本的浏览器。我们将很快到达这一点。

使用无头浏览器之前要注意的事项

无头浏览器是模拟程序,不是您真正的浏览器。
这些无头浏览器中的大多数已经发展到足以像真实浏览器一样进行模拟。仍然您不希望在无头浏览器中运行所有测试。在使用无头浏览器之前,JavaScript是您需要非常小心的地方。不同的浏览器以不同的方式实现JavaScript。尽管JavaScript是一种标准,但是每种浏览器在实现JavaScript的方式上都有其自身的微小差异。在无头浏览器的情况下也是如此。例如,HtmlUnit无头浏览器使用Rihno
JavaScript引擎,而其他任何浏览器都不会使用它。

无头驱动程序的一些示例包括

  • HtmlUnit
  • 幻影
  • 僵尸
  • Watir-webdriver


 类似资料:
  • 我在文本7中使用pdfHTMl创建了文档。我想为没有第一页的每一页添加页眉。我使用了PdfDocument事件。END_PAGE事件。但它适用于有第一页的每一页。如何从第一页中删除页眉?谢谢。

  • 问题内容: 我想做一个常见问题面板,当用户问它在部门顶部显示的任何问题而无需重新加载页面时,我想我必须每隔几秒钟就与数据库建立连接。现在的问题是,如何在不重新加载页面的情况下建立连接,以及如何显示新问题? 问题答案: 您有两种选择: Ajax,它允许您使用JavaScript从服务器检索数据,然后可以使用它来操作DOM。Ajax的基础是对象,它使您可以在JavaScript中完全检索后台数据。请注

  • 问题内容: 有没有办法可以在不重新加载页面的情况下修改当前页面的URL? 如果可能,我想访问#哈希 之前 的部分。 我只需要更改域 后 的部分,所以就好像我没有违反跨域策略一样。 问题答案: 现在,可以在Chrome,Safari,Firefox 4+和Internet Explorer 10pp4 +中完成此操作! 例: 然后,您可以用来检测后退/前进按钮的导航:

  • 问题内容: 转到任何GitHub 页面,然后单击任何目录/文件,并观察URL的更改方式,但仅更新页面的一部分。没有整个页面重新加载。 我如何使用jQuery做类似的事情? 这对大多数浏览器都有效吗(我使用的是Chrome)? 问题答案: 他们使用历史记录API,或者专门使用。 您可以使用它,不需要jQuery,但是有一些插件,例如history.js。 这适用于大多数浏览器,即Chrome,Saf

  • 问题内容: 有没有办法可以在不重新加载页面的情况下修改当前页面的URL? 如果可能,我想访问#哈希 之前 的部分。 我只需要更改域 后 的部分,所以就好像我没有违反跨域策略一样。 问题答案: 现在,可以在Chrome,Safari,Firefox 4+和Internet Explorer 10pp4 +中完成此操作! 有关更多信息,请参见此问题的答案: 使用新URL更新地址栏而不散列或重新加载页面

  • 我有一个用户名列表,用户名列表根据用户输入的数量而增加。问题是,当用户输入用户名时,列表会被输入填充,只有当我的页面重新加载时,我的页面才会更新。这是我迄今为止尝试过的代码。 我无法在外页重新加载的情况下更新数据。请建议我如何更新ui:在外页重新加载的情况下重复数据。提前谢谢。