Каков наилучший способ сделать снимок экрана веб-страницы? На данный момент я просто запускаю экземпляр selenium firefox и используя winapi, вывожу его на передний план и делайте скриншот. Я уже прошу использовать question.
Есть две точки:
- Медлительность.
- Если какое-либо окно становится выше нашего окна веб-браузера, это окно будет отображаться на нашем скриншоте.
Есть ли способ сделать снимок экрана более "программным"?
Вот какой код я использую сейчас:
class FirefoxDriverEx : FirefoxDriver
{
public Process GetFirefoxProcess()
{
var fi = typeof(FirefoxBinary).GetField("process", BindingFlags.NonPublic | BindingFlags.Instance);
return fi.GetValue(this.Binary) as Process;
}
}
Вот код, иллюстрирующий процесс самого скриншота:
using (FirefoxDriverEx driver = new FirefoxDriverEx())
{
driver.Navigate().GoToUrl(url);
var process = driver.GetFirefoxProcess();
if (process != null)
{
var screenCapture = new ScreenCapture();
Win.SetForegroundWindow(process.MainWindowHandle.ToInt32());
}
}
Прямо сейчас, я думаю о каком-то менеджере, который будет управлять очередью окон, чтобы сделать скриншоты.
Редактирование вопроса.
Я не ищу решение просто получить снимок экрана в памяти и вернуть его в поток HTTP. Поэтому любые способы сохранить снимок экрана и сохранить его в файл, а затем получить его оттуда, для этой цели очень неоднозначны.
Редактирование вопроса # 2.
Я забыл упомянуть. Необходимый скриншот должен быть выполнен, как это видно пользователю. Таким образом, снимок экрана должен иметь окно браузера и сайт внутри границ окна веб-браузера. Я не могу найти способ изменить режим съемки скриншота в WebDriver of selenium. WebDriver просто снимает скриншот страницы без какого-либо окна браузера.