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;
using System.Collections.Generic;
using System.Diagnostics; using System.Diagnostics;
using System.IO; using System.IO;
...@@ -7,21 +8,31 @@ namespace MasterDevs.ChromeDevTools ...@@ -7,21 +8,31 @@ namespace MasterDevs.ChromeDevTools
public class ChromeProcessFactory : IChromeProcessFactory public class ChromeProcessFactory : IChromeProcessFactory
{ {
public IDirectoryCleaner DirectoryCleaner { get; set; } 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; DirectoryCleaner = directoryCleaner;
ChromePath = chromePath;
} }
public IChromeProcess Create(int port) public IChromeProcess Create(int port, bool headless)
{ {
string path = Path.GetRandomFileName(); string path = Path.GetRandomFileName();
var directoryInfo = Directory.CreateDirectory(Path.Combine(Path.GetTempPath(), path)); var directoryInfo = Directory.CreateDirectory(Path.Combine(Path.GetTempPath(), path));
var remoteDebuggingArg = $"--remote-debugging-port={port}"; var remoteDebuggingArg = $"--remote-debugging-port={port}";
var userDirectoryArg = $"--user-data-dir=\"{directoryInfo.FullName}\""; var userDirectoryArg = $"--user-data-dir=\"{directoryInfo.FullName}\"";
const string headlessArg = "--headless --disable-gpu"; const string headlessArg = "--headless --disable-gpu";
var chromeProcessArgs = $"{headlessArg} {remoteDebuggingArg} {userDirectoryArg} --bwsi --no-first-run"; var chromeProcessArgs = new List<string>
var processStartInfo = new ProcessStartInfo(@"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe", chromeProcessArgs); {
remoteDebuggingArg,
userDirectoryArg,
"--bwsi",
"--no-first-run"
};
if (headless)
chromeProcessArgs.Add(headlessArg);
var processStartInfo = new ProcessStartInfo(ChromePath, string.Join(" ", chromeProcessArgs));
var chromeProcess = Process.Start(processStartInfo); var chromeProcess = Process.Start(processStartInfo);
string remoteDebuggingUrl = "http://localhost:" + port; string remoteDebuggingUrl = "http://localhost:" + port;
......
...@@ -2,6 +2,6 @@ ...@@ -2,6 +2,6 @@
{ {
public interface IChromeProcessFactory 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 ...@@ -22,7 +22,7 @@ namespace MasterDevs.ChromeDevTools.Sample
// STEP 1 - Run Chrome // STEP 1 - Run Chrome
var chromeProcessFactory = new ChromeProcessFactory(new StubbornDirectoryCleaner()); 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 // STEP 2 - Create a debugging session
var sessionInfo = (await chromeProcess.GetSessionInfo()).LastOrDefault(); 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