C# PhantomJS процесс грузит память и выключается

130
01 октября 2019, 10:00

Подскажите, пожалуйста, использую несколько экземпляров 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[i] as IJavaScriptExecutor;
jscript.ExecuteScript("window.open('', '_blank');");
Driver[i].SwitchTo().Window(Driver[i].WindowHandles[1]);
Driver[i].Navigate().GoToUrl(url);

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

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

Пробовал открывать так :

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

Тоже самое... Как можно найти причину? Спасибо

Update :

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

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); // После этого процесс зависает

CurrentWindowHandle принимает верный, третье окно создается, но при взаимодействии с ним, процесс выключается.

READ ALSO
Как импортировать данные в 1С посредством C#?

Как импортировать данные в 1С посредством C#?

Есть некоторые данные которые подгружаются функциями API (небольшое веб приложение)

158
Как удаленно получить инфу о доменной машине?

Как удаленно получить инфу о доменной машине?

подскажите пожалуйста есть ли в C# возможность находясь в учетке обычного доменного пользователя получить информацию об установленном ПО и информацию...

111
Учёт регистра значений при поиске с помощью linq выражений c#

Учёт регистра значений при поиске с помощью linq выражений c#

Есть Модель ClientТуда записывается вся контактная информация о клиенте

155
Как обернуть запрос xacml XML

Как обернуть запрос xacml XML

Есть шаблон запроса

155