using BadmintonBooker; using Microsoft.Playwright; using var playwright = await Playwright.CreateAsync(); var context = await BrowserManager.GetContextAsync(playwright); var page = context.Pages.Count > 0 ? context.Pages[0] : await context.NewPageAsync(); await page.GotoAsync("https://my.hdc.mv/"); await page.GetByRole(AriaRole.Link, new() { Name = "Login" }).ClickAsync(); await page.GetByRole(AriaRole.Button, new() { Name = "eFaas" }).ClickAsync(); await page.GetByRole(AriaRole.Tab, new() { Name = "Password Login" }).ClickAsync(new () { Delay = 1000 }); await page.GetByPlaceholder("Username").FillAsync("A384347"); var password = File.ReadAllText("password.txt"); await page.GetByPlaceholder("Password").FillAsync(password); await page.GetByRole(AriaRole.Button, new() { Name = "LOGIN" }).ClickAsync(); await page.GetByRole(AriaRole.Button, new() { Name = "CONTINUE" }).ClickAsync(new () { Delay = 1000 }); await Task.Delay(5000); var egovOtp = await OTPExtractor.GetEgovOTP(context, page); if (egovOtp is not null) Console.WriteLine($"Extracted eGov OTP: {egovOtp}"); else return; await page.GetByPlaceholder("OTP").FillAsync(egovOtp); await page.GetByRole(AriaRole.Button, new() { Name = "CONTINUE" }).ClickAsync(); await page.GetByText("Make a booking").ClickAsync(); await page.GetByText("Fahiveni").ClickAsync(); await page.GetByText("Sports and Leisure").ClickAsync(); await page.GetByText(" Fahiveni Community Center ").First.ClickAsync(new () { Delay = 1500 }); await page.GetByText("Badminton Court 1").ClickAsync(new () { Delay = 1500 }); Console.ReadLine();