Skip to content
Snippets Groups Projects
Commit 700d4096 authored by svatal's avatar svatal
Browse files

chrome - ability to set headless mode and path to chrome

parent 81f12e8b
No related branches found
No related tags found
No related merge requests found
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
......@@ -7,21 +8,31 @@ namespace MasterDevs.ChromeDevTools
public class ChromeProcessFactory : IChromeProcessFactory
{
public IDirectoryCleaner DirectoryCleaner { get; set; }
public string ChromePath { get; }
public ChromeProcessFactory(IDirectoryCleaner directoryCleaner)
public ChromeProcessFactory(IDirectoryCleaner directoryCleaner, string chromePath = @"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe")
{
DirectoryCleaner = directoryCleaner;
ChromePath = chromePath;
}
public IChromeProcess Create(int port)
public IChromeProcess Create(int port, bool headless)
{
string path = Path.GetRandomFileName();
var directoryInfo = Directory.CreateDirectory(Path.Combine(Path.GetTempPath(), path));
var remoteDebuggingArg = $"--remote-debugging-port={port}";
var userDirectoryArg = $"--user-data-dir=\"{directoryInfo.FullName}\"";
const string headlessArg = "--headless --disable-gpu";
var chromeProcessArgs = $"{headlessArg} {remoteDebuggingArg} {userDirectoryArg} --bwsi --no-first-run";
var processStartInfo = new ProcessStartInfo(@"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe", chromeProcessArgs);
var chromeProcessArgs = new List<string>
{
remoteDebuggingArg,
userDirectoryArg,
"--bwsi",
"--no-first-run"
};
if (headless)
chromeProcessArgs.Add(headlessArg);
var processStartInfo = new ProcessStartInfo(ChromePath, string.Join(" ", chromeProcessArgs));
var chromeProcess = Process.Start(processStartInfo);
string remoteDebuggingUrl = "http://localhost:" + port;
......
......@@ -2,6 +2,6 @@
{
public interface IChromeProcessFactory
{
IChromeProcess Create(int port);
IChromeProcess Create(int port, bool headless);
}
}
\ No newline at end of file
......@@ -22,7 +22,7 @@ namespace MasterDevs.ChromeDevTools.Sample
// STEP 1 - Run Chrome
var chromeProcessFactory = new ChromeProcessFactory(new StubbornDirectoryCleaner());
using (var chromeProcess = chromeProcessFactory.Create(9222))
using (var chromeProcess = chromeProcessFactory.Create(9222, true))
{
// STEP 2 - Create a debugging session
var sessionInfo = (await chromeProcess.GetSessionInfo()).LastOrDefault();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment