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)
试试这个:
Screenshot ss = ((ITakesScreenshot)driver).GetScreenshot();
ss.SaveAsFile(DateTime.Now.Ticks + ".jpg", ImageFormat.Jpeg);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
919 次 |
| 最近记录: |