private static Task InstallAsync(InstallBrowsersOptions opts) => Playwright.InstallAsync(browsersPath: opts.Path);
internal async Task Run() { _logger.LogInformation(" - Start Job -"); #region previous records and config file var records = new List <Dictionary <string, string> >(); var config = new Dictionary <string, string>(); #endregion using (var jsonOp = new JsonOP()) { _logger.LogInformation("Loading previous records..."); #region load previous records try { records = jsonOp.LoadData(recordPath); // load previous free game info } catch (Exception e) { _logger.LogError("Error loading previous records !"); _logger.LogError("Error message: { 0}\n", e.Message); } #endregion _logger.LogInformation("Done"); _logger.LogInformation("Loading configurations..."); #region load config try { config = jsonOp.LoadConfig(path: configPath); } catch (Exception e) { _logger.LogError("Error loading config file !"); _logger.LogError("Error message: {0}", e.Message); } #endregion _logger.LogInformation("Done"); } _logger.LogInformation("Getting page source..."); var htmlDoc = new HtmlDocument(); #region playright varialbles using var playwright = await Playwright.CreateAsync(); await using var browser = await playwright.Webkit.LaunchAsync(new() { Headless = true }); #endregion #region load page try { var page = await browser.NewPageAsync(); await page.GotoAsync(SteamDBUrl); Thread.Sleep(firstDelay); htmlDoc.LoadHtml(await page.InnerHTMLAsync("*")); _logger.LogInformation("Done"); } catch (Exception ex) { _logger.LogError("Get source error!"); _logger.LogError("Error message: {0}", ex.Message); } finally { await browser.CloseAsync(); } #endregion _logger.LogInformation("Start data processing..."); await StartProcess(htmlDoc : htmlDoc, records : records, chat_id : config["CHAT_ID"], token : config["TOKEN"]); _logger.LogInformation("Done"); _logger.LogInformation(" - End Job -"); }
public ChromiumInstance() { playwright = Playwright.CreateAsync().GetAwaiter().GetResult(); browser = playwright.Chromium.LaunchAsync().GetAwaiter().GetResult(); page = browser.NewPageAsync().GetAwaiter().GetResult(); }
private static Task InstallDriverAsync(InstallDriverOptions opts) { Playwright.InstallDriver(opts.Path ?? "."); return(Task.CompletedTask); }
public async Task DecileSummaryCPP() { await Playwright.InstallAsync(); using var playwright = await Playwright.CreateAsync(); await using var browser = await playwright.Chromium.LaunchAsync( headless : false, slowMo : 500 ); var context = await browser.NewContextAsync(); //// Open new page var page = await context.NewPageAsync(); await page.GoToAsync("https://qafour.profitstarsfps.com"); // await login.LoginFPS("DMLTest12", "Kiara%%%"); //// Click [placeholder="Enter User Name"] await page.ClickAsync("[placeholder=\"Enter User Name\"]"); //Fill [placeholder="Enter User Name"] await page.FillAsync("[placeholder=\"Enter User Name\"]", "mpantoja"); // Press Tab await page.PressAsync("[placeholder=\"Enter User Name\"]", "Tab"); //// Fill [aria-label="Password"] await page.FillAsync("[aria-label=\"Password\"]", "Kiara###"); //Press Enter await Task.WhenAll( page.WaitForNavigationAsync(/*"https://qafour.profitstarsfps.com/"*/), page.PressAsync("[aria-label=\"Password\"]", "Enter")); await page.GoToAsync("https://qasp.profitstarsfps.com/#/home"); // Go to https://qafour.profitstarsfps.com/#/dashboard await page.GoToAsync("https://qafour.profitstarsfps.com/#/dashboard"); // Click text=REPORTING await page.ClickAsync("text=REPORTING"); // Click text=Create Reports await Task.WhenAll( page.WaitForNavigationAsync(/*"https://qafour.profitstarsfps.com/#/createReports?userSelection=%7B%229%22:29,%2223%22:0%7D"*/), page.ClickAsync("text=Create Reports")); // Click input[type="text"] await page.ClickAsync("input[type=\"text\"]"); // Fill input[type="text"] await page.FillAsync("input[type=\"text\"]", "Decile Summary"); // Click text=Decile Summary // Press Enter await page.PressAsync("input[type=\"text\"]", "Enter"); // Assert.Equal("https://qafour.profitstarsfps.com/#/createReports?userSelection=%7B%229%22:49,%2223%22:0%7D", page.Url); // Fill input[name="_Option1"] // await page.FillAsync("input[name=\"_Option1\"]", "1"); // Click input[name="_Option1"] await page.ClickAsync("input[name=\"_Option1\"]"); // Click text=PDF await page.ClickAsync("text=PDF"); // Click text=Generate await page.ClickAsync("text=Generate"); // Click text=View Reports await page.ClickAsync("text=View Reports"); // Assert.Equal("https://qafour.profitstarsfps.com/#/viewReports", page.Url); // Click text=Decile Summary PDF04/20/2021 8:16 PM 1 Selected >> span await page.WaitForSelectorAsync("// html / body / div[2] / div[1] / div / section / div[2] / div[2] / div / div / div[3] / form / div / div / div[3] / table / tbody / tr / td[1] / div / div / span"); // await page.ClickAsync("text=Decile Summary PDF04/20/2021 8:16 PM 1 Selected >> span"); // Click td[role="gridcell"] span await page.ClickAsync("td[role=\"gridcell\"] span"); // Click text=Delete await page.ClickAsync("text=Delete"); // Click text=Yes await page.ClickAsync("text=Yes"); // Click text=Create Reports await Task.WhenAll( page.WaitForNavigationAsync(/*"https://qafour.profitstarsfps.com/#/createReports?userSelection=%7B%229%22:29,%2223%22:0%7D"*/), page.ClickAsync("text=Create Reports")); // Assert.Equal("https://qafour.profitstarsfps.com/#/createReports?userSelection=%7B%7D", page.Url); // --------------------- }
public async Task ShouldReturnChildProcessInstance() { using var browserApp = await Playwright.LaunchBrowserAppAsync(TestConstants.GetDefaultBrowserOptions()); Assert.True(browserApp.Process.Id > 0); }
public async Task CustRankingFavorite() { //Context Context; //LogIn login = null; //LogOff logOff = null; //public LogInSteps(Context context) //{ // Context = context; // login = new LogIn(Context.Page); // logOff = new LogOff(Context.Page); //} //await login.LoginFPS("DMLTest12", "Kiara%%%"); string baseNameFavRep = "AAA BB Fav "; string dateappend = DateTime.Now.ToString(); string dateappend1 = dateappend.Replace("/", ""); string dateappend2 = dateappend1.Replace(":", ""); string faveAppendName = baseNameFavRep + dateappend2; await Playwright.InstallAsync(); using var playwright = await Playwright.CreateAsync(); await using var browser = await playwright.Chromium.LaunchAsync( headless : false, slowMo : 500 ); var context = await browser.NewContextAsync(); //// Open new page var page = await context.NewPageAsync(); await page.GoToAsync("https://qafour.profitstarsfps.com"); //// Click [placeholder="Enter User Name"] await page.ClickAsync("[placeholder=\"Enter User Name\"]"); //Fill [placeholder="Enter User Name"] await page.FillAsync("[placeholder=\"Enter User Name\"]", "mpantoja"); // Press Tab await page.PressAsync("[placeholder=\"Enter User Name\"]", "Tab"); //// Fill [aria-label="Password"] await page.FillAsync("[aria-label=\"Password\"]", "Kiara###" + ""); //Press Enter await Task.WhenAll( page.WaitForNavigationAsync(/*"https://qafour.profitstarsfps.com/"*/), page.PressAsync("[aria-label=\"Password\"]", "Enter")); await page.GoToAsync("https://qafour.profitstarsfps.com/#/home"); await page.GoToAsync("https://qafour.profitstarsfps.com/#/dashboard"); // Click text=REPORTING await page.ClickAsync("text=REPORTING"); // Click text=Create Reports await Task.WhenAll( page.WaitForNavigationAsync(/*"https://qafour.profitstarsfps.com/#/createReports?userSelection=%7B%229%22:29,%2223%22:0%7D"*/), page.ClickAsync("text=Create Reports")); // Click input[type="text"] await page.ClickAsync("input[type=\"text\"]"); // Fill input[type="text"] await page.FillAsync("input[type=\"text\"]", "Customer Ranking"); // Press Enter await page.PressAsync("input[type=\"text\"]", "Enter"); // Assert.Equal("https://qafour.profitstarsfps.com/#/createReports?userSelection=%7B%229%22:46,%2223%22:0%7D", page.Url); // Check input[name="Save as Favorite"] await page.CheckAsync("input[name=\"Save as Favorite\"]"); // Click input[name="favoriteNameInputField"] await page.ClickAsync("input[name=\"favoriteNameInputField\"]"); // Fill input[name="favoriteNameInputField"] await page.FillAsync("input[name=\"favoriteNameInputField\"]", faveAppendName); // Click text=Excel await page.ClickAsync("text=Excel"); // Click text=Save await page.ClickAsync("text=Save"); // Click text=Favorites await page.ClickAsync("text=Favorites"); // Assert.Equal("https://qafour.profitstarsfps.com/#/createReports?userSelection=%7B%229%22:1,%2223%22:1%7D", page.Url); // Click #scrollCanvas await page.ClickAsync("text=View Reports"); // Assert.Equal("https://qafour.profitstarsfps.com/#/viewReports", page.Url); // Click text=Create Reports await Task.WhenAll( page.WaitForNavigationAsync(/*"https://qafour.profitstarsfps.com/#/createReports?userSelection=%7B%229%22:29,%2223%22:0%7D"*/), page.ClickAsync("text=Create Reports")); // Assert.Equal("https://qafour.profitstarsfps.com/#/createReports?userSelection=%7B%7D", page.Url); // Click text=Favorites await page.ClickAsync("text=Favorites"); // Assert.Equal("https://qafour.profitstarsfps.com/#/createReports?userSelection=%7B%229%22:1,%2223%22:1%7D", page.Url); // Click input[type="text"] await page.ClickAsync("input[type=\"text\"]"); // Fill input[type="text"] await page.FillAsync("input[type=\"text\"]", faveAppendName); // Click text=AAA BB Fav 4212021 93938 PM await page.ClickAsync("text=" + faveAppendName); // below is just a sort of stub area until we can figure out the scroll canvas issue // await page.FocusAsync("#delete4"); // await page.QuerySelectorAllAsync("#delete3"); // await page.GetAttributeAsync("delete3",); // await page.ClickAsync(clickX); // await page.GetAttributeAsync("#delete3",faveAppendName); //await page.ClickAsync("//*[@id='delete4']"); // await page.ClickAsync("//div[@id='SelectionPanelTreeview']//*[@id='delete3']"); // < span id = "delete4" class="treeview-node-button fa fa-times" ng-style="{left: node.deleteButtonLeft, position: 'absolute'}" ng-click="vm.deleteNode($index)" ng-class="node.deleteButtonClass" style="left: 584px; position: absolute;"> // </span> //await page.ClickAsync("#delete3", force: true); // --------------------- }
/// <inheritdoc cref="IAsyncLifetime.InitializeAsync"/> public virtual async Task InitializeAsync() => Browser = await Playwright.LaunchAsync(TestConstants.GetDefaultBrowserOptions());
public static void Main(string[] args) { Playwright.InstallAsync(); CreateHostBuilder(args).Build().Run(); }
public async Task <Checker> BuildAsync() { var quickBulletSettings = JsonConvert.DeserializeObject <QuickBulletSettings>(File.ReadAllText(settingsFile)); var loliScriptManager = new LoliScriptManager(); (var configSettings, var blocks) = loliScriptManager.Build(_configFile); if (string.IsNullOrEmpty(configSettings.Name)) { configSettings.Name = Path.GetFileNameWithoutExtension(_configFile); } if (!string.IsNullOrEmpty(configSettings.AdditionalInfo)) { AnsiConsole.MarkupLine($"[grey]CONFIG INFO:[/] {configSettings.AdditionalInfo}"); } if (configSettings.CustomInputs.Any()) { AnsiConsole.Write(new Rule("[darkorange]Custom input[/]").RuleStyle("grey").LeftAligned()); foreach (var customInput in configSettings.CustomInputs) { customInput.Value = AnsiConsole.Ask <string>($"{customInput.Description}:"); } } var botInputs = File.ReadAllLines(_wordlistFile).Where(w => !string.IsNullOrEmpty(w)).Select(w => new BotInput(w)); if (configSettings.InputRules.Any()) { botInputs = botInputs.Where(b => configSettings.InputRules.All(i => _checkInputRuleFunctions[i.Name].Invoke(b, i))); } var useProxy = _proxies.Any(); var proxyHttpClients = _proxies.Any() ? new List <ProxyHttpClient>(_proxies.Select(p => BuildProxy(p, _proxyType)).Select(p => new ProxyHttpClient(new HttpClientHandler() { UseCookies = false, Proxy = p }, p) { Timeout = TimeSpan.FromSeconds(15) })) : new List <ProxyHttpClient>() { new ProxyHttpClient(new HttpClientHandler() { UseCookies = false }, null) { Timeout = TimeSpan.FromSeconds(15) } }; var proxyHttpClientManager = new ProxyHttpClientManager(proxyHttpClients); if (useProxy) { _ = proxyHttpClientManager.StartValidateAllProxiesAsync(); } var record = GetRecord(configSettings.Name); Directory.CreateDirectory(Path.Combine(quickBulletSettings.OutputDirectory, configSettings.Name)); var skip = _skip == -1 ? record.Progress : _skip; var checkerStats = new CheckerStats(skip) { DegreeOfParallelism = _bots }; var statusesToBreak = new string[] { "toCheck", "failure", "retry", "ban", "error" }; var statusesToRecheck = new string[] { "retry", "ban", "error" }; var readerWriterLock = new ReaderWriterLock(); var handler = new HttpClientHandler() { UseCookies = false }; var httpClient = new HttpClient(handler) { Timeout = TimeSpan.FromSeconds(15) }; var playwright = await Playwright.CreateAsync(); Func <BotInput, CancellationToken, Task <bool> > check = new(async(input, cancellationToken) => { BotData botData = null; for (var attempts = 0; attempts < 8; attempts++) { var proxyHttpClient = proxyHttpClientManager.GetRandomProxyHttpClient(); botData = new BotData(quickBulletSettings, input, httpClient, proxyHttpClient, playwright) { UseProxy = useProxy }; botData.Variables.Add("data.proxy", proxyHttpClient.Proxy is null ? string.Empty : proxyHttpClient.Proxy.ToString()); foreach (var customInput in configSettings.CustomInputs) { botData.Variables.Add(customInput.Name, customInput.Value); } foreach (var block in blocks) { try { await block.RunAsync(botData); } catch (HttpRequestException) { proxyHttpClient.IsValid = false; botData.Variables["botStatus"] = "retry"; } catch (Exception error) { if (error.Message.Contains("HttpClient.Timeout") || error.Message.Contains("ERR_TIMED_OUT")) { proxyHttpClient.IsValid = false; } else if (_verbose) { AnsiConsole.WriteException(error); } botData.Variables["botStatus"] = "retry"; } if (statusesToBreak.Contains(botData.Variables["botStatus"], StringComparer.OrdinalIgnoreCase)) { break; } } await botData.DisposeAsync(); if (statusesToRecheck.Contains(botData.Variables["botStatus"], StringComparer.OrdinalIgnoreCase)) { if (botData.Variables["botStatus"].Equals("ban", StringComparison.OrdinalIgnoreCase)) { proxyHttpClient.IsValid = false; } checkerStats.Increment(botData.Variables["botStatus"]); } else { break; } } var botStatus = statusesToRecheck.Contains(botData.Variables["botStatus"], StringComparer.OrdinalIgnoreCase) ? "tocheck" : botData.Variables["botStatus"].ToLower(); if (botStatus.Equals("failure")) { checkerStats.Increment(botData.Variables["botStatus"]); } else { var outputPath = Path.Combine(quickBulletSettings.OutputDirectory, configSettings.Name, $"{botStatus}.txt"); var output = botData.Captures.Any() ? new StringBuilder().Append(botData.Input.ToString()).Append(quickBulletSettings.OutputSeparator).AppendJoin(quickBulletSettings.OutputSeparator, botData.Captures.Select(c => $"{c.Key} = {c.Value}")).ToString() : botData.Input.ToString(); try { readerWriterLock.AcquireWriterLock(int.MaxValue); using var streamWriter = File.AppendText(outputPath); await streamWriter.WriteLineAsync(output); } finally { readerWriterLock.ReleaseWriterLock(); } switch (botStatus) { case "success": AnsiConsole.MarkupLine($"[green4]SUCCESS:[/] {output}"); break; case "tocheck": AnsiConsole.MarkupLine($"[cyan3]TOCHECK:[/] {output}"); break; default: AnsiConsole.MarkupLine($"[orange3]{botStatus.ToUpper()}:[/] {output}"); break; } checkerStats.Increment(botStatus); } checkerStats.Increment("checked"); return(true); }); var paradllelizer = ParallelizerFactory <BotInput, bool> .Create(type : ParallelizerType.TaskBased, workItems : botInputs, workFunction : check, degreeOfParallelism : _bots, totalAmount : botInputs.Skip(skip).Count(), skip : skip); return(new Checker(paradllelizer, checkerStats, record)); }
public async Task <BrowserType> NewContextAsync(Playwright pl) { var chrome = pl.Chromium; return((BrowserType)(IBrowserContext)chrome); }