RemoteWebDriver 上是否有通用版本的 ExecuteChromeCommand 允许我使用 Selenium 获取整页屏幕截图

Is there a generic version of ExecuteChromeCommand on RemoteWebDriver to allow me to take full page screenshots with Selenium

我正在使用 RemoteWebDriver 来截取网页,我希望能够截取整个页面的屏幕截图并且在网上看到了很多示例,例如 this 可以计算出渲染的大小页面,适当地设置浏览器 window 大小,然后截取屏幕截图。

这些命令似乎都是特定于浏览器的(上面的示例是在 ChromeDriver 实例上调用 ExecuteChromeCommand),有没有办法通过 RemoteWebDriver 执行此操作?

我只在 RemoteWebDriver 调用的另一端使用 Chrome 实例,但它们位于单独的 docker 容器中,因此需要远程。

谢谢

富有

如果您有权访问驱动程序本身,那么您可以确定页面宽度和高度,然后设置驱动程序 window 大小以匹配。我有以下作为获取全尺寸屏幕截图的扩展方法。

 public static string GetEntireScreenshot(this IWebDriver driver)
 {
        // Get the total size of the page
        var totalWidth = (int)(long)((IJavaScriptExecutor)driver).ExecuteScript("return document.body.offsetWidth"); //documentElement.scrollWidth");
        var totalHeight = (int)(long)((IJavaScriptExecutor)driver).ExecuteScript("return  document.body.parentNode.scrollHeight");
        // Make the window the same size
        driver.Manage().Window.Size = new System.Drawing.Size(totalWidth, totalHeight);
        var screenshot = ((ITakesScreenshot)driver).GetScreenshot();
        return screenshot.AsBase64EncodedString;
 }