diff --git a/source/ChromeDevTools/ChromeProcessFactory.cs b/source/ChromeDevTools/ChromeProcessFactory.cs index 494568ef65ac924090158d1f45d5b8a20d8e7409..85017bf103915e7f72bad087d2742f0efde9c079 100644 --- a/source/ChromeDevTools/ChromeProcessFactory.cs +++ b/source/ChromeDevTools/ChromeProcessFactory.cs @@ -1,4 +1,5 @@ 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; diff --git a/source/ChromeDevTools/IChromeProcessFactory.cs b/source/ChromeDevTools/IChromeProcessFactory.cs index ddf57955e97a993ed0f5341c94e362af2c9d86ee..fcac1ce28ce0cec469a2e073f8a1b4857aa9a4f7 100644 --- a/source/ChromeDevTools/IChromeProcessFactory.cs +++ b/source/ChromeDevTools/IChromeProcessFactory.cs @@ -2,6 +2,6 @@ { public interface IChromeProcessFactory { - IChromeProcess Create(int port); + IChromeProcess Create(int port, bool headless); } } \ No newline at end of file diff --git a/source/Sample/Program.cs b/source/Sample/Program.cs index 2d42013a6b697272d0e9a89dc51952e245a20d6f..7b3761d0e1ae274afca6aaa43f4120d5a61f6717 100644 --- a/source/Sample/Program.cs +++ b/source/Sample/Program.cs @@ -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();