【问题标题】:Using Selenium ChromeDriver to get page DOM, calculate speed使用 Selenium ChromeDriver 获取页面 DOM,计算速度
【发布时间】:2018-01-30 14:38:36
【问题描述】:

我正在尝试使用 Selenium 和 ChromeDriver 尽快获取页面的完整 DOM。当我的重要 Ajax 请求完成后,我将一个类注入 dom 并使用 WebDriverWait 等待该类,然后再继续。

当我测试来自 api(ajax 调用)的响应时,它们非常一致,我还删除了对广告服务器或网站和 api 之外的任何请求。我检查了来自服务器日志和wireshark 的请求,它们非常一致。

ChromeDriver 获取完整 dom 所需的时间差异很大。以下是我正在使用的参数和开关。我从 700 毫秒到 4 秒得到任何东西来获得同一页面的完整 dom。我在这里使用的是否有阻碍 ChromeDriver 的开关?如果我只想要 DOM,我应该使用什么,没有别的?如何优化速度?

使用 Selenium.WebDriver.3.5.0 和 Chrome 60。

        chromeOptions.AddArguments("headless", "disable-gpu", "renderer");
        chromeOptions.AddArgument("disable-translate");
        chromeOptions.AddArgument("no-default-browser-check");
        chromeOptions.AddArgument("site-per-process");
        chromeOptions.AddArgument("disable-3d-apis");
        chromeOptions.AddArgument("disable-background-mode");
        chromeOptions.AddArgument("site-per-process");
        chromeOptions.AddUserProfilePreference("profile.managed_default_content_settings.images", 2);
        chromeOptions.AddUserProfilePreference("credentials_enable_service", false);

谢谢

【问题讨论】:

  • 您是否禁用了图像和 CSS 加载?
  • 我禁用了图片,如何禁用 css 加载?我只是在寻找一个开关,正要发表评论!
  • 我阻止了在为 Web 应用程序提供服务的服务器上加载 CSS,因此它现在没有返回到 Chrome。它有点帮助。老实说,我仍然认为我的命令行开关无处不在
  • 你会考虑用Java回答吗?
  • 是的,我没有反对 Java。

标签: c# google-chrome selenium selenium-chromedriver chromium


【解决方案1】:

我的用例是使用 chrome webdriver 生成一个完整的 dom 发送给爬虫。它是 prerender.io 的替代品。

我看到其他一些开发者也想尝试这个。

我的建议是不要这样做。它不是为此而设计的,根据我的经验,您无法做任何事情来使响应更可靠。

如果您使用 angular,请使用通用 (https://universal.angular.io/),我们对此进行了测试,效果很好。

对于其他 JS 框架,https://prerender.io 仍然是一个选项。

谢谢。

【讨论】:

    猜你喜欢
    • 2020-01-27
    • 2016-05-28
    • 2019-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-02
    相关资源
    最近更新 更多