C # PhantomJS процесс утечки памяти и выход при использовании окон / вкладок - PullRequest
0 голосов
/ 12 февраля 2019

подскажите, пожалуйста, я хочу использовать несколько экземпляров PhantomJSDriver:

PhantomJSDriver[] Driver = new PhantomJSDriver[memberscount];

for (int i = 0; i < memberscount; i++)
{
   driverService[i] = PhantomJSDriverService.CreateDefaultService();
   driverService[i].HideCommandPromptWindow = true;
   driverService[i].LoadImages = false;
   driverService[i].ProxyType = "http";
   driverService[i].Proxy = proxy[i];
   options[i] = new PhantomJSOptions();
   options[i].AddAdditionalCapability("phantomjs.page.settings.userAgent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36");
   Driver[i] = new PhantomJSDriver(driverService[i], options[i]);
   Driver[i].Manage().Window.Size = new Size(1920, 1080);
   Driver[i].ExecutePhantomJS(script);
 }

Каждый экземпляр работает хорошо, пока я не попытаюсь открыть новое окно / вкладку и открыть ссылку в нем:

IJavaScriptExecutor jscript = Driver[count] as IJavaScriptExecutor;
jscript.ExecuteScript("window.open('', '_blank');");
Driver[i].SwitchTo().Window(Driver[i].WindowHandles[1]);
Driver[i].Navigate().GoToUrl(url);

В этот момент Второй и все последующие экземпляры Драйвер начинают загружать ЦП на 10%, и объем оперативной памяти растет экспоненциально, пока phantomjs.ex eпроцесс закрывается сам (без ошибок)

Но первый экземпляр PhantomJSDriver работает стабильно, даже с окнами, проблемы начинаются, только если я открываю окно со вторым и другими драйверами.

Попыталсяоткройте как это:

Driver.ExecuteJavaScript("window.open('" + url + "', '_blank');");

И есть та же проблема ... Как я могу найти причину?Спасибо!

Обновление :

Обнаружено, что это также происходит после создания второго дополнительного окна (третьего) и перехода по ссылке:

url = "...1";
Driver[i].ExecuteScript("window.open('', '_blank');");
Driver[i].SwitchTo().Window(Driver[i].WindowHandles[1]);
Driver[i].Navigate().GoToUrl(url);

url = "...2";
Driver[i].ExecuteScript("window.open('', '_blank');");
Driver[i].SwitchTo().Window(Driver[i].WindowHandles[2]);
Driver[i].Navigate().GoToUrl(url); // After that, process crashing

С переменной CurrentWindowHandle все в порядке, третье окно создано, но при взаимодействии с ним процесс завершается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...