static async Task <Browser> FetchAndLaunchBrowser() { var browserFetcher = new BrowserFetcher(); var revision = await browserFetcher.DownloadAsync(); var launchOptions = new LaunchOptions { ExecutablePath = revision.ExecutablePath }; return(await Puppeteer.LaunchAsync(launchOptions)); }
/// <inheritdoc/> public HeadfulTests(ITestOutputHelper output) : base(output) { string extensionPath = TestUtils.GetWebServerFile("simple-extension"); _extensionOptions = TestConstants.GetDefaultBrowserOptions(); _extensionOptions.Headless = false; _extensionOptions.Args = new[] { $"--disable-extensions-except={extensionPath}", $"--load-extension={extensionPath}" }; }
/// <summary> Instantiates a headless chrome browser and a page object to hold the rendered /// objects. /// </summary> /// <returns></returns> async Task CreateBrowserAndPageAsync() { var options = new LaunchOptions { Headless = true }; await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision); this.browser = await Puppeteer.LaunchAsync(options); this.page = await browser.NewPageAsync(); }
public async Task using_Page() { var options = new LaunchOptions { Headless = true }; await using var browser = await Puppeteer.LaunchAsync(options); await using var page = await browser.NewPageAsync(); // ... }
/// <inheritdoc/> public HeadfulTests(ITestOutputHelper output) : base(output) { string extensionPath = Path.Combine(Directory.GetCurrentDirectory(), "Assets", "simple-extension"); _extensionOptions = TestConstants.GetDefaultBrowserOptions(); _extensionOptions.Headless = false; _extensionOptions.Args = new[] { $"--disable-extensions-except={extensionPath}", $"--load-extension={extensionPath}" }; }
private void Button_Click(object sender, RoutedEventArgs e) { var ver = (KMCCC.Launcher.Version)comboBox1.SelectedItem; LaunchOptions options = new LaunchOptions { JavaPath = javapath.Text, Version = ver, //Ver为Versions里你要启动的版本名字 MaxMemory = 1024, //最大内存,int类型 //Authenticator = new OfflineAuthenticator("Xiao_yejun"), //离线启动 Mode = LaunchMode.MCLauncher, //启动模式,这个我会在后面解释有哪几种 Size = new WindowSize { Height = 768, Width = 1280 } //设置窗口大小,可以不要 }; if ((bool)zb.IsChecked) { options.Authenticator = new YggdrasilLogin(youxiang.Text, mima.Text, false); } else { options.Authenticator = new OfflineAuthenticator("Xiao_yejun"); //离线启动 } var result = Core.Launch(options); //Authenticator = new YggdrasilLogin("邮箱", "密码", true), //case ErrorType.AuthenticationFailed: //MessageBox.Show(this, "正版验证失败!请检查你的账号密码", "账号错误\n详细信息:" + result.ErrorMessage,MessageBoxButtons.OK,MessageBoxIcon.Error); if (!result.Success) { switch (result.ErrorType) { case ErrorType.AuthenticationFailed: MessageBox.Show(this, "正版验证失败!请检查你的账号密码", "账号错误\n详细信息:" + result.ErrorMessage); break; case ErrorType.NoJAVA: MessageBox.Show(result.ErrorMessage + "你没有java哦"); break; case ErrorType.UncompressingFailed: MessageBox.Show(result.ErrorMessage + "文件损坏了呢"); break; default: MessageBox.Show(result.ErrorMessage + "启动错误"); break; } } }
public PptStreamer(LaunchOptions opts) { System.Diagnostics.Debug.WriteLine("PptStreamer"); LaunchOpts = opts; Disposed = false; Quit = false; StreamDelay = TimeSpan.FromMilliseconds(50); StreamThread = new Thread(new ThreadStart(StreamRoutine)); StreamThread.Start(); }
public PuppeteerSharpHttpHelper() { new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision).Wait(); var launchOptions = new LaunchOptions { Headless = true }; if (_browser == null) { _browser = Puppeteer.LaunchAsync(launchOptions).GetAwaiter().GetResult(); } }
public async Task <Browser> LaunchAsync(string[] chromeArgs) { var chromeLocation = new ChromiumExtractor(loggerFactory).ExtractChromium(); var launchOptions = new LaunchOptions() { ExecutablePath = chromeLocation, Args = chromeArgs, Headless = true }; return(await new Launcher(loggerFactory).LaunchAsync(launchOptions)); }
static PupeeteerTool() { ops = new NavigationOptions() { Timeout = 120000, }; options = new LaunchOptions { Headless = true, /// pipe options is missing, may be in version 1.1.0 }; }
public static void RunParsed(LaunchOptions options) { EnviromentManager.Init(); EnviromentManager.LaunchOptions = options; if (!options.Silent) { var app = new App(); app.InitializeComponent(); app.Run(); } }
public when_no_list_nor_wait_command_set() { options = new LaunchOptions() { DotNet = new LaunchOptions.DotNetPart() { Project = testAssemblyPath, DesignTime = true, Port = 123, }, NSpec = new LaunchOptions.NSpecPart(), }; }
private async Task <Browser> GetNewBrowserAsync() { await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision); LaunchOptions browserOptions = new LaunchOptions { Headless = true, Args = new string[] { "--lang=" + Vkontakte.Language.ToString().ToLowerInvariant() } }; Browser browser = await Puppeteer.LaunchAsync(browserOptions); return(browser); }
public async Task <byte[]> GenerateReport(bool headless) { Console.WriteLine(MessageResources.GenerateReportLaunching); var opt = new LaunchOptions { Headless = headless, Args = new[] { "--no-sandbox" }, DefaultViewport = new ViewPortOptions { Width = _settings.Viewport.Width, Height = _settings.Viewport.Height }, ExecutablePath = _settings.ChromiumPath }; using var browser = await Puppeteer.LaunchAsync(opt); using var page = await browser.NewPageAsync(); Console.WriteLine(MessageResources.GenerateReportLoggingIn); await page.GoToAsync("https://telkomdds.atlassian.net", WaitUntilNavigation.Networkidle0); await page.TypeAsync("#username", _settings.AtlassianAccount.Email); await page.ClickAsync("#login-submit"); await page.WaitForSelectorAsync("#password", new WaitForSelectorOptions { Visible = true, Timeout = TimeoutDuration }); await page.TypeAsync("#password", _settings.AtlassianAccount.Password); await page.ClickAsync("#login-submit"); await page.WaitForSelectorAsync("#jira-frontend", new WaitForSelectorOptions { Visible = true, Timeout = TimeoutDuration }); Console.WriteLine(MessageResources.GenerateReportScreenshot); await page.GoToAsync("https://telkomdds.atlassian.net/issues/?filter=11241", TimeoutDuration, new[] { WaitUntilNavigation.Networkidle0 }); var img = await page.ScreenshotDataAsync(); Console.WriteLine(MessageResources.GenerateReportLoggingOut); await page.GoToAsync("https://telkomdds.atlassian.net/logout", TimeoutDuration, new[] { WaitUntilNavigation.Networkidle0 }); await page.CloseAsync(); await browser.CloseAsync(); await SaveReport(img); return(img); }
public static async Task PuppeteerOpenBrowser(BotData data) { data.Logger.LogHeader(); PuppeteerSharp.Browser browser; var args = data.ConfigSettings.PuppeteerSettings.CommandLineArgs; if (data.Proxy != null && data.UseProxy) { args += $" --proxy-server={data.Proxy.Type.ToString().ToLower()}://{data.Proxy.Host}:{data.Proxy.Port}"; } // Check if there is already an open browser if (!data.Objects.ContainsKey("puppeteer") || ((PuppeteerSharp.Browser)data.Objects["puppeteer"]).IsClosed) { // Configure the options var launchOptions = new LaunchOptions { Args = new string[] { args }, ExecutablePath = data.Providers.PuppeteerBrowser.ChromeBinaryLocation, Headless = data.ConfigSettings.PuppeteerSettings.Headless, DefaultViewport = null // This is important }; // Add the plugins var extra = new PuppeteerExtra(); extra.Use(new StealthPlugin()); // Launch the browser browser = await extra.LaunchAsync(launchOptions); browser.IgnoreHTTPSErrors = data.ConfigSettings.PuppeteerSettings.IgnoreHttpsErrors; // Save the browser for further use data.Objects["puppeteer"] = browser; var page = (await browser.PagesAsync()).First(); SetPageAndFrame(data, page); // Authenticate if the proxy requires auth if (data.UseProxy && data.Proxy != null && data.Proxy.NeedsAuthentication) { await page.AuthenticateAsync(new Credentials { Username = data.Proxy.Username, Password = data.Proxy.Password }); } data.Logger.Log($"{(launchOptions.Headless ? "Headless " : "")}Browser opened successfully!", LogColors.DarkSalmon); } else { data.Logger.Log("The browser is already open, close it if you want to open a new browser", LogColors.DarkSalmon); } }
private LaunchOptions CreateAttachLaunchOptions(uint processId, IDebugPort2 port) { LaunchOptions launchOptions; var unixPort = port as IDebugUnixShellPort; if (unixPort != null) { MIMode miMode; if (_engineGuid == EngineConstants.GdbEngine) { miMode = MIMode.Gdb; } else if (_engineGuid == EngineConstants.LldbEngine) { miMode = MIMode.Lldb; } else { throw new NotImplementedException(); } if (processId > int.MaxValue) { throw new ArgumentOutOfRangeException(nameof(processId)); } launchOptions = LaunchOptions.CreateForAttachRequest(unixPort, (int)processId, miMode, Logger); } else { // TODO: when we have a tools options page, we can add support for the attach dialog here pretty easily: //var defaultPort = port as IDebugDefaultPort2; //if (defaultPort != null && defaultPort.QueryIsLocal() == Constants.S_OK) //{ // launchOptions = new LocalLaunchOptions(...); //} //else //{ // // Invalid port // throw new ArgumentException(); //} throw new NotSupportedException(); } return(launchOptions); }
public async Task <Browser> LaunchAsync(LaunchOptions options) { _plugins.ForEach(e => e.BeforeLaunch(options)); var browser = await Puppeteer.LaunchAsync(options); _plugins.ForEach(e => e.AfterLaunch(browser)); await OnStart(new BrowserStartContext() { StartType = StartType.Launch, IsHeadless = options.Headless }, browser); return(browser); }
static async Task Main(string[] args) { var style = new LaunchOptions { Headless = true }; await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision); Console.WriteLine("\nGet information from CGV..."); using (var browser = await Puppeteer.LaunchAsync(style)) using (var page = await browser.NewPageAsync()) { await page.GoToAsync("https://www.cgv.id/en/movies/now_playing"); var jsSelectAllAnchors = await page.QuerySelectorAllHandleAsync(".movie-list-body > ul >li > a").EvaluateFunctionAsync <string[]> ("elements => elements.map(a => a.href)"); Console.WriteLine("\n=========Now Playing========="); HtmlWeb web = new HtmlWeb(); for (int i = 0; i < jsSelectAllAnchors.Length; i++) { var htmlDoc = web.Load(jsSelectAllAnchors[i]); Console.WriteLine("\n\n========================================================================================================"); var Title = htmlDoc.DocumentNode.SelectNodes("//div[@class='movie-info-title']"); foreach (var node in Title) { Console.WriteLine("\nTITLE :\n" + node.InnerText.Trim() + "\n"); } var Starring = htmlDoc.DocumentNode.SelectNodes("//div[@class='movie-add-info left']/ul /li"); foreach (var node in Starring) { Console.WriteLine("> " + node.InnerText.Trim()); } var Trailer = htmlDoc.DocumentNode.SelectNodes("//div[@class='trailer-btn-wrapper']/img"); foreach (var node in Trailer) { var getLink = node.GetAttributeValue("onclick", string.Empty); Console.WriteLine("\n> TRAILER LINK : " + getLink.Remove(0, 11)); } var Synopsis = htmlDoc.DocumentNode.SelectNodes("//div[@class='movie-synopsis right']"); foreach (var node in Synopsis) { Console.WriteLine("\n> SYNOPIS : " + node.InnerText.Trim()); } } } }
public async Task Setup() { ConfigurationHelper.Initialise(TestContext.CurrentContext.TestDirectory); DbHelper.ClearDb(); IdentityHelpers.ClearAll(); //todo: allow other actors (types of provider) //var providerActor = (ProviderActor)TestContext.CurrentContext.Test.Arguments.GetValue(0); var provider = Actors.Provider.Create(); await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision); var launchOptions = new LaunchOptions { Headless = false, IgnoreHTTPSErrors = true, //SlowMo = 10 }; Console.WriteLine("Launching browser..."); Browser = await Puppeteer.LaunchAsync(launchOptions); var context = Browser.DefaultContext; Page = await context.NewPageAsync(); var url = LaunchPage.Url.Replace("{providerId}", provider.ProviderId.ToString()); Console.WriteLine($"Opening {url}"); var response = await Page.GoToAsync(url); //Realm selection await Page.ClickOn(LaunchPage.Realm); await Page.WaitForNavigationAsync(); await Page.TypeInputAsync(LaunchPage.Username, provider.Username); await Page.TypeInputAsync(LaunchPage.Password, provider.Password); Console.Write("Signing in... "); await Page.Keyboard.DownAsync("Enter"); //hit enter, rather than click button await Page.WaitForSelectorAsync(".govuk-header"); //await Page.WaitForNavigationAsync(); Console.WriteLine("Complete"); }
public LaunchResult Launch(LaunchOptionBase launchOption, params Action <MinecraftLaunchArguments>[] argumentsOperators) { if (UserAuthenticator == null) { FailedResult.ErrorType = ErrorType.AuthenticationFailed; FailedResult.ErrorMessage = "User authenticator no set"; Console.WriteLine("ERROR: User authenticator no set"); return(FailedResult); } if (launchOption == null) { Console.WriteLine("ERROR: Launch message is null"); FailedResult.ErrorMessage = "Launch message is null"; return(FailedResult); } Core.JavaPath = launchOption.javaExt; //LaunchOptions in KMCCC, different with LaunchOption in OneMCL.Core LaunchOptions options = new LaunchOptions() { Version = Core.GetVersion(launchOption.versionId), Authenticator = UserAuthenticator, GameDirPath = string.IsNullOrEmpty(launchOption.gameDir) ? Core.GameRootPath : launchOption.gameDir, }; Console.WriteLine("Launching..."); int argsCount = 0; if (argumentsOperators != null) { argsCount = argumentsOperators.Length; } Action <MinecraftLaunchArguments>[] argsOpt = new Action <MinecraftLaunchArguments> [argsCount + 1]; argsOpt[0] = (Action <MinecraftLaunchArguments>)(args => { args.AdvencedArguments.Add(launchOption.javaArgs); System.Version osVersion = Environment.OSVersion.Version; args.AdvencedArguments.Add("-Dos.name=\"" + GetSystemVersionName(osVersion.Major, osVersion.Minor) + "\""); args.AdvencedArguments.Add("-Dos.version=" + osVersion.Major + "." + osVersion.Minor); args.AdvencedArguments.Add("-Dminecraft.launcher.brand=one-minecraft-launcher"); //args.AdvencedArguments.Add("-Dminecraft.launcher.version="); args.AdvencedArguments.Add("-Dminecraft.client.jar=" + Core.GetVersionJarPath(options.Version)); //args.AdvencedArguments.Add("-Dlog4j.configurationFile="); }); argumentsOperators?.CopyTo(argsOpt, 1); return(Core.Launch(options, argsOpt)); }
public static async Task Main(string[] args) { var options = new LaunchOptions { Headless = true }; Console.WriteLine("Downloading Chromium"); await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision); Console.WriteLine("Goes to CGV Now PLaying"); using (var browser = await Puppeteer.LaunchAsync(options)) using (var page = await browser.NewPageAsync()) { await page.GoToAsync("https://www.cgv.id/en/movies/now_playing"); var list = await page.QuerySelectorAllHandleAsync(".movie-list-body > ul >li > a").EvaluateFunctionAsync <string[]>("elements => elements.map(a => a.href)"); Console.WriteLine("Movie List"); for (int i = 0; i < list.Length; i++) { Console.WriteLine("=========================================================================================================="); Console.WriteLine(""); HtmlWeb web = new HtmlWeb(); var htmlDoc = web.Load(list[i]); var nodes1 = htmlDoc.DocumentNode.SelectNodes("//div[@class='movie-info-title']"); foreach (var x in nodes1) { Console.WriteLine(x.InnerHtml.Trim()); } var nodes2 = htmlDoc.DocumentNode.SelectNodes("//div[@class='trailer-btn-wrapper']/img"); foreach (var x in nodes2) { Console.WriteLine("Trailer : " + x.GetAttributeValue("onclick", string.Empty).Substring(11)); } Console.WriteLine("PRODUCER : -"); var nodes3 = htmlDoc.DocumentNode.SelectNodes("//div[@class='movie-add-info left']/ ul / li"); foreach (var x in nodes3) { Console.WriteLine(x.InnerHtml.Trim()); } var nodes4 = htmlDoc.DocumentNode.SelectNodes("//div[@class='movie-synopsis right']"); foreach (var x in nodes4) { Console.WriteLine("SINOPSIS : " + x.InnerText.Trim()); } Console.WriteLine(); } } }
public static async Task Main(string[] args) { var options = new LaunchOptions { Headless = true, DumpIO = false, ExecutablePath = args[0] }; using (var browser = await Puppeteer.LaunchAsync(options)) { Console.WriteLine(browser.WebSocketEndpoint); Console.ReadLine(); } }
private static async Task <Browser> PrepareHeadlessBrowser(bool isHeadless) { var options = new LaunchOptions { Headless = isHeadless, Timeout = 0, }; Console.WriteLine("Downloading chromium (if needed)"); await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision); var browser = await Puppeteer.LaunchAsync(options); return(browser); }
public static async Task Main(string[] args) { var options = new LaunchOptions { Headless = true, DumpIO = true, ExecutablePath = args[1] }; using (var browser = await Puppeteer.LaunchAsync(options)) using (var page = await browser.NewPageAsync()) { await page.EvaluateFunctionAsync("_dumpioTextToLog => console.log(_dumpioTextToLog)", args[0]); } }
public AndroidLaunchOptions(MICore.Xml.LaunchOptions.AndroidLaunchOptions xmlOptions, TargetEngine targetEngine) { if (xmlOptions == null) { throw new ArgumentNullException("xmlOptions"); } this.Package = LaunchOptions.RequireAttribute(xmlOptions.Package, "Package"); this.IsAttach = xmlOptions.Attach; if (!IsAttach) { // LaunchActivity is only required when we're launching this.LaunchActivity = LaunchOptions.RequireAttribute(xmlOptions.LaunchActivity, "LaunchActivity"); } this.SDKRoot = GetOptionalDirectoryAttribute(xmlOptions.SDKRoot, "SDKRoot"); this.NDKRoot = GetOptionalDirectoryAttribute(xmlOptions.NDKRoot, "NDKRoot"); this.TargetArchitecture = LaunchOptions.ConvertTargetArchitectureAttribute(xmlOptions.TargetArchitecture); if (targetEngine == TargetEngine.Native) { this.IntermediateDirectory = RequireValidDirectoryAttribute(xmlOptions.IntermediateDirectory, "IntermediateDirectory"); } else { this.IntermediateDirectory = GetOptionalDirectoryAttribute(xmlOptions.IntermediateDirectory, "IntermediateDirectory"); } if (targetEngine == TargetEngine.Java) { this.JVMHost = LaunchOptions.RequireAttribute(xmlOptions.JVMHost, "JVMHost"); this.JVMPort = xmlOptions.JVMPort; this.SourceRoots = GetSourceRoots(xmlOptions.SourceRoots); foreach (SourceRoot root in this.SourceRoots) { EnsureValidDirectory(root.Path, "SourceRoots"); } } this.AdditionalSOLibSearchPath = xmlOptions.AdditionalSOLibSearchPath; this.AbsolutePrefixSOLibSearchPath = xmlOptions.AbsolutePrefixSOLibSearchPath ?? "\"\""; this.DeviceId = LaunchOptions.RequireAttribute(xmlOptions.DeviceId, "DeviceId"); this.LogcatServiceId = GetLogcatServiceIdAttribute(xmlOptions.LogcatServiceId); this.WaitDynamicLibLoad = xmlOptions.WaitDynamicLibLoad; CheckTargetArchitectureSupported(); }
private async Task <Browser> CreateWebBrowser(string ChromePath) { async Task <WebSocket> CreateWebSocketTask(Uri url, IConnectionOptions options, CancellationToken cancellationToken) { var result = new System.Net.WebSockets.Managed.ClientWebSocket(); result.Options.KeepAliveInterval = TimeSpan.Zero; await result.ConnectAsync(url, cancellationToken).ConfigureAwait(false); return(result); } var downloadChrome = string.IsNullOrEmpty(ChromePath) || !File.Exists(ChromePath); if (downloadChrome) { Debug.Write("downloading Chrome..."); var browserFetcherOptions = new BrowserFetcherOptions { Path = $"{AppDomain.CurrentDomain.BaseDirectory}", Platform = Platform.Win64, Product = Product.Chrome }; var browserFetcher = new BrowserFetcher(browserFetcherOptions); var revisionInfo = await browserFetcher.DownloadAsync(); ChromePath = revisionInfo.ExecutablePath; // set the created chrome path Debug.WriteLine("done!"); } var launchOptions = new LaunchOptions { Headless = false, Timeout = (10 * 1000), // 10 sec ExecutablePath = ChromePath, /// $"{AppDomain.CurrentDomain.BaseDirectory}Win64-884014\\chrome-win\\chrome.exe", DefaultViewport = null, // max resolution IgnoreHTTPSErrors = true, Args = new[] { "--no-sandbox", "--disable-gpu" } // "--window-size=800,1080" }; if (Environment.OSVersion.Version.Major < 10) { launchOptions.WebSocketFactory = CreateWebSocketTask; // support for windows-7 } var browser = await Puppeteer.LaunchAsync(launchOptions); return(browser); }
protected internal T ExecuteJsCommand <T>(string url, string jsCommand) { var options = new LaunchOptions { Headless = true }; using (var browser = Puppeteer.LaunchAsync(options).Result) { using (var page = browser.NewPageAsync().Result) { _ = page.GoToAsync(url).Result; return(page.EvaluateExpressionAsync <T>(jsCommand).Result); } } }
private string GetChromeExecutablePath(LaunchOptions options) { string chromeExecutable = options.ExecutablePath; if (string.IsNullOrEmpty(chromeExecutable)) { chromeExecutable = ResolveExecutablePath(); } if (!File.Exists(chromeExecutable)) { throw new FileNotFoundException("Failed to launch chrome! path to executable does not exist", chromeExecutable); } return(chromeExecutable); }
public override void BeforeLaunch(LaunchOptions options) { var args = options.Args.ToList(); var idx = args.FindIndex(e => e.StartsWith("--disable-blink-features=")); if (idx != -1) { var arg = args[idx]; args[idx] = $"{arg}, AutomationControlled"; return; } args.Add("--disable-blink-features=AutomationControlled"); options.Args = args.ToArray(); }
public LaunchResult Run() { var launchercore = LauncherCore.Create(new LauncherCoreCreationOption(javaPath: Config.Instance.JavaPath)); launchercore.GameLog += OnGameLog; launchercore.GameExit += (handle, i) => { OnGameExit?.Invoke(handle, i); IsRunning = false; }; var launchOptions = new LaunchOptions { Version = launchercore.GetVersion(Definitions.ClientName), Authenticator = new OfflineAuthenticator(Config.Instance.PlayerAccount.Username), Mode = LaunchMode.BmclMode, MaxMemory = Config.Instance.MaxMemory }; var result = launchercore.Launch(launchOptions, x => { if (Config.Instance.JavaArguments.Contains("G1GC")) { x.CGCEnabled = false; } x.AdvencedArguments.Add(Config.Instance.JavaArguments); }); IsRunning = true; if (!result.Success) { OnError?.Invoke(result); IsRunning = false; } return(result); /* * result.Handle.GetPrivateField<Process>(nameof(Process)).Exited += (sender, args) => * { * IsRunning = false; * OnGameExit?.Invoke(); * }; */ }