Я использую PhantomJS через Selenium и столкнулся с проблемой на одном веб-сайте с большим количеством изображений.
Когда я пытаюсь сделать снимок экрана, процессорная память PhantomJS становится очень высокой, ≈4-44 МБ (≈100 МБ перед снимком экрана)
С --load-images=no
лучше, ≈70-100 МБ.
Есть ли способ решить эту проблему без полного отключения изображений? Может быть, можно сделать снимок экрана только видимой области, а не полной страницы?
В других 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);
}
}
}
(это не тот веб-сайт, который я использовал, потому что он требует авторизации/пароля auth, просто изображение с тяжелым сайтом от Google, потребление памяти немного ниже, но все еще огромно - ≈300 МБ)