48 public class BrowserSettings
50 internal IBrowser Browser {
get;
set; }
53 internal bool SuppressJavaScriptFailures {
get;
set; } =
false;
55 internal bool ObeyRobotsTxt {
get;
set; } =
false;
56 internal bool RespectRobotMetaTags {
get;
set; } =
false;
58 internal List<string> RobotsTxt {
get;
set; }
59 internal Dictionary<int, TabInfo> TabIdsToURL {
get;
set; } =
new Dictionary<int, TabInfo>();
60 internal Dictionary<string, URLInfo> URLsToTabId {
get;
set; } =
new Dictionary<string, URLInfo>();
61 internal Dictionary<string, WindowInfo> WindowIdsToURL {
get;
set; } =
new Dictionary<string, WindowInfo>();
63 internal string BrowserName {
get;
set; } =
null;
64 internal string DriverLocation {
get;
set; } =
null;
65 internal int ServiceDriverPid {
get;
set; } = 0;
67 internal bool LoadImages {
get;
set; } =
true;
69 internal bool OpenPDFExternally {
get;
set; } =
false;
71 internal bool PromptForDownload {
get;
set; } =
true;
75 internal bool? DialogsAccepted {
get;
set; } =
null;
78 internal string DialogText {
get;
set; } =
null;
81 internal List<Browser.CallOnFailDelegate> CallOnFail {
get;
set; } =
new List<Browser.CallOnFailDelegate>();
86 internal DateTime? CredentialsPresented {
get;
set; }
88 internal List<string> DownloadFileTypeList {
get;
set; } =
null;
90 internal List<string> OpenFileTypeList {
get;
set; } =
null;
92 internal bool WaitOnDocumentReady {
get;
set; } =
true;
93 internal bool WaitOnNetworkIdle {
get;
set; } =
false;
94 internal int NetworkIdleTimeoutMs {
get;
set; } = 30_000;
95 internal int NetworkIdleMaxConnections {
get;
set; } = 0;
96 internal int NetworkIdlePruneMs {
get;
set; } = 3_000;
97 internal bool TempProfileCreated {
get;
set; } =
false;
98 internal bool DownloadBehaviorSet {
get;
set; } =
false;
99 internal Dictionary<string, JToken> PreviousDownloadPreferences {
get;
set; } =
null;
101 internal Dictionary<string, string> PreviousFirefoxPreferences {
get;
set; } =
null;
106 internal string ProfileDataDirectory {
get;
set; }
107 internal string ProfileName {
get;
set; }
108 internal string ProfileUserName {
get;
set; }
110 internal BrowserType BrowserType {
get;
set; } = BrowserType.Chrome;
111 internal string PlatformName {
get;
set; } =
"Windows 10";
114 internal bool UseExistingBrowser {
get;
set; } =
false;
115 internal int? ExistingBrowserPort {
get;
set; } =
null;
118 internal int? DebugPort {
get;
set; }
119 internal bool DebugPipe {
get;
set; }
120 public PipeStream InboundPipe {
get;
set; }
121 public PipeStream OutboundPipe {
get;
set; }
122 public PipeStream ErrorPipe {
get;
set; }
123 internal string PuppeteerUrl {
get;
set; }
127 internal bool CaptureCalls {
get;
set; } =
false;
131 internal string CallFilter {
get;
set; }
134 internal bool CaptureUnavailableReported {
get;
set; } =
false;
136 PuppeteerCommunicator _puppeteerCommunicator =
null;
140 internal bool HasPuppeteerCommunicator =>
null != _puppeteerCommunicator;
142 internal PuppeteerCommunicator PuppeteerCommunicator
146 if (
null == _puppeteerCommunicator &&
true == UsePuppeteer)
148 if (
null == PuppeteerUrl)
156 GPAL.
PublishSimpleEvent(GPALEventType.ERROR, $
"A Puppeteer connection was asked for before [{BrowserType}] had a debugging port, so it is pointed at [{ours}] where nothing is listening rather than at another browser",
this, GPALObjectType.Browser);
158 PuppeteerUrl = $
"http://localhost:{ours}";
164 _puppeteerCommunicator =
new PuppeteerCommunicator(PuppeteerUrl, Browser, DebugPipe, CaptureCalls);
166 else if (
null == _puppeteerCommunicator &&
false == UsePuppeteer)
170 _puppeteerCommunicator =
new PuppeteerCommunicator();
173 return _puppeteerCommunicator;
177 _puppeteerCommunicator = value;
182 get => PuppeteerCommunicator?.PuppeteerClient;
183 set => PuppeteerCommunicator.PuppeteerClient = value;
185 internal bool FullScreen {
get;
set; } =
false;
186 internal bool Maximize {
get;
set; } =
false;
187 internal bool Minimize {
get;
set; } =
false;
188 public bool UseHardware {
get => AutomationEngine.OttoMagicHW == AutomationEngine || AutomationEngine.PuppeteerPipeHW == AutomationEngine || AutomationEngine.PuppeteerPortHW == AutomationEngine || AutomationEngine.SeleniumHW == AutomationEngine; }
189 public bool UseJavaScript {
get => AutomationEngine.OttoMagic == AutomationEngine || AutomationEngine.SeleniumJS == AutomationEngine; }
190 public bool UseOttoMagic {
get => AutomationEngine.OttoMagic == AutomationEngine || AutomationEngine.OttoMagicHW == AutomationEngine; }
191 public bool UsePuppeteer {
get => AutomationEngine.PuppeteerPipe == AutomationEngine || AutomationEngine.PuppeteerPort == AutomationEngine || AutomationEngine.PuppeteerPortHW == AutomationEngine || AutomationEngine.PuppeteerPipeHW == AutomationEngine; }
192 public bool UseSelenium {
get => AutomationEngine.Selenium == AutomationEngine || AutomationEngine.SeleniumJS == AutomationEngine || AutomationEngine.SeleniumHW == AutomationEngine; }
194 public AutomationEngine AutomationEngine {
get;
set; } = AutomationEngine.PuppeteerPort;
197 internal bool HiddenDesktop {
get;
set; } =
false;
201 internal bool ImageSearchInPage {
get;
set; } =
false;
210 internal bool HiddenDesktopReported {
get;
set; } =
false;
214 internal bool HiddenDesktopChecked {
get;
set; } =
false;
218 internal bool HiddenDesktopHardwareReported {
get;
set; } =
false;
219 internal int WaitForDocumentReadyTimeoutMs {
get;
set; } = 30_000;
223 internal int NavigationGraceMs {
get;
set; } = 250;
225 internal int WithAllThatMatch {
get;
set; } =
int.MaxValue;
227 internal string RestApiBaseUrl {
get;
set; }
230 internal bool AttachedRestApi {
get;
set; }
242 internal set => _magicHelper = value;
252 internal void DetachFromRunningBrowser(
Browser browser)
255 BrowserDriver =
null;
257 RestApiBaseUrl =
null;
259 _puppeteerCommunicator =
null;
261 internal StealthType StealthType {
get;
set; } = StealthType.None;
262 internal bool StealthApplied {
get;
set; } =
false;
263 internal string CurrentURL {
get;
set; }
264 private GPALUrl _currentGPALUrl =
null;
265 internal GPALUrl CurrentGPALUrl
267 get => _currentGPALUrl;
270 _currentGPALUrl = value;
271 StorageActionToRun =
new StorageAction();
274 internal List<GPALUrl> GPALUrlList {
get;
set; }
275 internal string Referrer {
get;
set; } =
null;
276 internal string OverrideUserAgent {
get;
set; } =
null;
280 internal bool UserAgentFromBrowser {
get;
set; } =
false;
281 internal Selector CurrentSelector {
get;
set; } =
null;
282 internal IWebDriver BrowserDriver {
get;
set; } =
null;
283 internal System.Windows.Forms.Form CurrentForm {
get;
set; } =
null;
284 internal int WaitForWindowTimeoutInSeconds {
get;
set; } = 30;
285 internal bool BlockPopUps {
get;
set; } =
true;
286 internal int DownloadTimeoutInSec {
get;
set; } = 10;
287 internal bool UseDirectDownload {
get;
set; } =
false;
288 internal string DownloadLocation {
get;
set; }
289 internal bool DeleteFileBeforeDownload {
get;
set; } =
false;
290 internal bool OpenInTab {
get;
set; } =
false;
291 internal bool UseHeadless {
get;
set; } =
false;
292 internal bool? FileDownloaded {
get;
set; }
293 internal bool ScrollIntoView {
get;
set; } =
false;
294 internal Rectangle WindowSize {
get;
set; }
295 internal Size SavedWindowSize {
get;
set; }
296 internal PageOrientation PageOrientation {
get;
set; }
297 internal object JavaScriptResultObj {
get;
set; }
298 internal string JavaScriptResultStr {
get;
set; }
299 internal StorageAction StorageActionToRun {
get;
set; }
300 internal bool StorageActionCalled {
get;
set; }
302 internal string Version =
string.Empty;
303 internal int ServerResponseCode {
get;
set; }
305 internal Bitmap ScreenShot;
306 internal Process Process {
get;
set; } =
null;
307 internal int WhileLoopTimeoutMs {
get;
set; } = 30000;
308 internal int WhileLoopMaxIterations {
get;
set; } = 1000;
309 internal List<Action<IBrowser>> Workflows {
get;
set; }
310 internal BrowserSettings(Browser browser)
312 DownloadFileTypeList =
new List<string>();
313 OpenFileTypeList =
new List<string>();
314 WindowSize =
new Rectangle();
315 SavedWindowSize =
new Size();
316 Workflows =
new List<Action<IBrowser>>();
318 PageOrientation = PageOrientation.Portrait;
319 RobotsTxt =
new List<string>();
320 StorageActionToRun =
new StorageAction();
321 StorageActionCalled =
false;
322 GPALUrlList =
new List<GPALUrl>();