Как создать множество окон веб браузера и получить доступ к объектам javascript из основной программы на C#?

451
23 сентября 2017, 20:45

Как создать множество окон веб браузера и получить доступ к объектам javascript внутри окон(либо фреймов)?
Суть- есть сервис, выполняющий определённые вычисления, но что б задействовать всю мощь- надо держать открытыми 100-150 вкладок браузера и одновременно их мониторить на определённые изменения в браузере. Соответственно нужно открыть в веб браузере определённые страницы-получить к ним рут доступ и когда там произойдут события- уведомлять основную программу. А само окно браузера можно не отображать для экономии ресурсов. Интересует только внедрение во внутрь кода запускаемых сотни страниц из программы на C#(лучше) ну или Nodejs.

Answer 1

Chrome совсем недавно зарелизили специальный безголовый режим браузера, т.е. запускается полноценный браузер, но без UI. Параллельно с этим они сделали хорошую nodejs либу для работы с таким браузером - puppeteer.

Вот небольшой пример (больше примеров в readme)

const puppeteer = require('puppeteer');
(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  await page.goto('https://example.com');
  // Get the "viewport" of the page, as reported by the page.
  await page.evaluate(() => {
    return {
      width: document.documentElement.clientWidth,
      height: document.documentElement.clientHeight,
      deviceScaleFactor: window.devicePixelRatio
    };
  });
  await browser.close();
})();
READ ALSO
C++\CLI и C# в одном решении

C++\CLI и C# в одном решении

Есть два проектаОдин на C# (в основном интерфейс), другой на С++\CLI (сам код)

238
Использование SkiaSharp в WPF с соблюдением MVVM

Использование SkiaSharp в WPF с соблюдением MVVM

Цель: разработка простого векторного редактора на WPF с использованием SkiaSharp, в частности размещение SKElement в окне и рисование на нем прямых...

305
Не происходит нажатие на элемент формы WebBrowser

Не происходит нажатие на элемент формы WebBrowser

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

312
вопрос про реализацию сервиса/сайта

вопрос про реализацию сервиса/сайта

Подскажите, как реализовать описанное нижеЕсли можно с кратким описанием

339