使用 Selenium ChromeDriver 获取页面 DOM,计算速度

Using Selenium ChromeDriver to get page DOM, calculate speed

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

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

Chrome驱动程序获得完整 dom 所需的时间差异很大。以下是我正在使用的参数和开关。我从 700 毫秒到 4 秒内得到任何东西,以获得同一页面的完整 dom。我在这里使用的开关是否阻碍了 Chrome 驱动程序?如果我只想要 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);

谢谢

我的用例是使用 chrome webdriver 生成完整的 dom 以发送给爬虫。它是 prerender.io.

的替代品

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

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

如果您使用的是 angular,请使用通用 (https://universal.angular.io/) 我们测试过它,效果很好。

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

谢谢。