截图后PhantomJS的内存消耗量很大

Ale*_* P. 19 c# selenium phantomjs selenium-webdriver

我通过Selenium使用PhantomJS,并在一个网站上遇到了大量图片的问题.

当我试图截取幻像时,PhantomJS进程内存消耗非常高,≈400-450MB(屏幕截图前≈100MB)

随着--load-images=no它更好,≈70-100MB.

有没有办法解决这个问题而不完全禁用图像?也许只能截取可见区域的截图而不是整页?

与其他WebDrivers(如Chrome)一起工作正常.

class Program
{
    public static RemoteWebDriver CreatePhantomJsDriver()
    {
        var service = PhantomJSDriverService.CreateDefaultService();
        //service.AddArgument("--load-images=no");

        var options = new PhantomJSOptions();
        options.AddAdditionalCapability("phantomjs.page.settings.userAgent", "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36");

        return new PhantomJSDriver(service, options);
    }

    public static void SaveScreenshot(RemoteWebDriver driver)
    {
        try
        {
            driver.TakeScreenshot().SaveAsFile(DateTime.Now.Ticks + ".jpg", ImageFormat.Jpeg);
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
    }

    static void Main(string[] args)
    {
        using (var driver  = CreatePhantomJsDriver())
        {
            driver.Manage().Window.Size = new Size(1600, 1200);

            driver.Url = "http://color-looks.ru/index";

            Thread.Sleep(5000);

            SaveScreenshot(driver);

            Thread.Sleep(5000);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

(这不是我使用的网站,因为它需要登录/密码验证,只是谷歌的一些图像重的网站,内存消耗有点低但仍然巨大 - ≈300MB)

Thi*_*dio 0

试试这个:

Screenshot ss = ((ITakesScreenshot)driver).GetScreenshot();
ss.SaveAsFile(DateTime.Now.Ticks + ".jpg", ImageFormat.Jpeg);
Run Code Online (Sandbox Code Playgroud)