public MovieInfo Run(MovieInfo info, string outputDirectory, AutomationBrowserType browserType) { if (info != null && info.WikiLinks != null && info.WikiLinks.Any()) { foreach (var link in info.WikiLinks) { this.WPage.Navigate(link); try { info.Directors_Wiki = this.WPage.GetDirector(); info.WikiLink = link; info.WikiScreenShotPath = $"{AutomationUtility.ExcludeSymbols(info.Name)}_wiki.png"; this.WPage.GetScreenshot(Path.Combine(outputDirectory, info.WikiScreenShotPath)); } catch { } if (!string.IsNullOrEmpty(info.Directors_Wiki)) { break; } } ; info.ImdbLink = this.WPage.GetIMDbLink(browserType); this.IPage.Navigate(info.ImdbLink); info.Directors_Imdb = this.IPage.GetDirector(browserType); info.ImdbScreenShotPath = $"{AutomationUtility.ExcludeSymbols(info.Name)}_imdb.png"; this.IPage.GetScreenshot(Path.Combine(outputDirectory, info.ImdbScreenShotPath)); } return(info); }
public void Automate(List <string> testInputs, AutomationBrowserType browserType, string outputDirectory, int degreeOfParallelism = 5) { Console.WriteLine($"UTC-{DateTime.UtcNow}: Automation started."); if (browserType == AutomationBrowserType.PCChromeBrowser) { List <Task> tasks = new List <Task>() { Task.Factory.StartNew(() => { RunTests(testInputs.Take(1).ToList(), AutomationBrowserType.MobileChromeBrowser, outputDirectory, 1); }), Task.Factory.StartNew(() => { RunTests(testInputs.Skip(1).ToList(), AutomationBrowserType.PCChromeBrowser, outputDirectory, degreeOfParallelism); }) }; Task.WaitAll(tasks.ToArray()); } else { RunTests(testInputs, AutomationBrowserType.PCHeadlessChromeBrowser, outputDirectory, degreeOfParallelism); } var reportData = GetReportData(testInputs, outputDirectory); var report = ReportGenerator.Generate(reportData, "Report Template\\TestAutothonReport.html"); AutomationUtility.SaveReport(report, $"{outputDirectory}\\Report.html"); Console.WriteLine($"UTC-{DateTime.UtcNow}: Automation completed."); }
private void RunTests(List <string> testInputs, AutomationBrowserType browserType, string outputDirectory, int degreeOfParallelism = 5) { ParallelOptions option = new ParallelOptions() { MaxDegreeOfParallelism = browserType != AutomationBrowserType.MobileChromeBrowser ? degreeOfParallelism : 1 }; Parallel.ForEach(testInputs, option, (input) => { var info = AutomationUtility.Deserialize <MovieInfo>($"{outputDirectory}\\{AutomationUtility.ExcludeSymbols(input)}.xml"); if (info != null) { var automationDriver = new AutomationDriver(); automationDriver.StartBrowser(browserType, 3); AutomationFacade facade = new AutomationFacade(automationDriver.Browser, 120); try { info = facade.Run(info, outputDirectory, browserType); if (string.IsNullOrEmpty(info.Directors_Wiki)) { info.Directors_Wiki = "Cannot find Wikipedia result"; } if (string.IsNullOrEmpty(info.Directors_Imdb)) { info.Directors_Imdb = "Cannot find IMDb result"; } Console.WriteLine($"The test {info.Passed} for {info.Name}"); } catch (Exception ex) { Console.WriteLine(ex.Message); info = new MovieInfo(); info.Name = input; info.Directors_Imdb = "Cannot find IMDb result"; info.Directors_Wiki = "Cannot find Wikipedia result"; } AutomationUtility.Serialize <MovieInfo>(info, $"{outputDirectory}\\{AutomationUtility.ExcludeSymbols(info.Name)}.xml"); automationDriver.StopBrowser(); } }); }
private List <List <string> > GetReportData(List <string> testInputs, string outputDirectory) { var header = new List <string> { "Name", "WikiLink", "Wiki_Directors", "Wiki_Screenshot", "ImdbLink", "Imdb_Directors", "Wiki_Screenshot", "Result" }; var reportData = new List <List <string> >(); reportData.Add(header); testInputs.ForEach(input => { var info = AutomationUtility.Deserialize <MovieInfo>($"{outputDirectory}\\{AutomationUtility.ExcludeSymbols(input)}.xml"); if (info != null) { reportData.Add(info.ToArray().ToList()); } }); return(reportData); }
public void GetWikiLinks(List <string> testInputs, AutomationBrowserType browserType, string outputDirectory, int noOfResults = 2) { Console.WriteLine($"UTC-{DateTime.UtcNow}: Retrieving Wiki Links."); var googleDriver = new AutomationDriver(); googleDriver.StartBrowser(browserType, 3); AutomationFacade facade = new AutomationFacade(googleDriver.Browser); if (testInputs != null && testInputs.Any()) { facade.NavigateToGoogle(); testInputs.ForEach(input => { var info = facade.GetWikiLinks(input, noOfResults); AutomationUtility.Serialize <MovieInfo>(info, $"{outputDirectory}\\{AutomationUtility.ExcludeSymbols(info.Name)}.xml"); }); } googleDriver.StopBrowser(); }