From e3f0d3343a6ab99f4febd34e1b2a7e33a0bff515 Mon Sep 17 00:00:00 2001 From: Prateek Mahendrakar Date: Sun, 27 Sep 2020 21:45:56 -0400 Subject: [PATCH 1/3] index out of bound fix --- .Net Core/MSRewards/Program.cs | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/.Net Core/MSRewards/Program.cs b/.Net Core/MSRewards/Program.cs index 95f46a2..bb2e1ac 100644 --- a/.Net Core/MSRewards/Program.cs +++ b/.Net Core/MSRewards/Program.cs @@ -81,6 +81,7 @@ private async Task Login(IWebDriver driverlocal, WebDriverWait localwait) catch (Exception ex) { Debug.WriteLine(ex.Message); + Debug.WriteLine(ex.StackTrace); } passwordEntry.SendKeys(password); @@ -99,6 +100,7 @@ private async Task Login(IWebDriver driverlocal, WebDriverWait localwait) catch (Exception ex) { Debug.WriteLine(ex.Message); + Debug.WriteLine(ex.StackTrace); try { var yesButton = localwait.Until(d => d.FindElement(By.Id(Constants.IdSIButton9))); @@ -106,8 +108,9 @@ private async Task Login(IWebDriver driverlocal, WebDriverWait localwait) } catch (Exception ex2) { - + Debug.WriteLine(ex2.Message); + Debug.WriteLine(ex2.StackTrace); } } @@ -177,7 +180,7 @@ private async Task Run(bool useFirefox = false) try { var pointSplits = pointDetailsList.FirstOrDefault()?.Text?.Replace(" ", "").Split("/"); - if (pointSplits != null) + if (pointSplits != null && pointSplits?.Length >= 2) { int.TryParse(pointSplits[0].Trim(), out var current); int.TryParse(pointSplits[1].Trim(), out var total); @@ -197,7 +200,8 @@ private async Task Run(bool useFirefox = false) } catch (Exception ex) { - Console.WriteLine(ex.Message + Environment.NewLine + ex.InnerException?.Message); + Console.WriteLine(ex.Message); + Debug.WriteLine(ex.StackTrace); } } return result; @@ -236,7 +240,8 @@ private async Task BingSearch(RewardType rewardType, int current, int target, bo while (current < target) { - Search(edgeDriver, edgeWait, Constants.BingSearchURL + wordList[rand.Next(wordList.Count)]); + var nextInt = rand.Next(wordList.Count); + Search(edgeDriver, edgeWait, Constants.BingSearchURL + wordList[nextInt <= wordList.Count ? nextInt : 0]); current += 5; if (current >= target) { @@ -277,7 +282,8 @@ private async Task BingSearch(RewardType rewardType, int current, int target, bo while (current < target) { - Search(firefoxDriver, driverWait, Constants.BingSearchURL + wordList[rand.Next(wordList.Count)]); + var nextInt = rand.Next(wordList.Count); + Search(firefoxDriver, driverWait, Constants.BingSearchURL + wordList[nextInt <= wordList.Count ? nextInt : 0]); current += 5; if (current >= target) { @@ -313,7 +319,8 @@ private void Search(IWebDriver driver, WebDriverWait wait, string url) } catch (Exception ex) { - Console.WriteLine(ex.Message + Environment.NewLine + ex.InnerException?.Message); + Console.WriteLine(ex.Message); + Debug.WriteLine(ex.StackTrace); } } } From e7faa993406071c581f79d9cc848ecf97c9490a9 Mon Sep 17 00:00:00 2001 From: Prateek Mahendrakar Date: Mon, 28 Sep 2020 14:35:18 -0400 Subject: [PATCH 2/3] mobile browsing related changes --- .Net Core/MSRewards/Constants.cs | 8 ++++ .Net Core/MSRewards/Program.cs | 72 ++++++++++++++++++++++++++------ 2 files changed, 67 insertions(+), 13 deletions(-) diff --git a/.Net Core/MSRewards/Constants.cs b/.Net Core/MSRewards/Constants.cs index 57e76f8..942a17a 100644 --- a/.Net Core/MSRewards/Constants.cs +++ b/.Net Core/MSRewards/Constants.cs @@ -1,3 +1,5 @@ +using OpenQA.Selenium.DevTools.DOM; + namespace MSRewards { public static class Constants @@ -24,6 +26,12 @@ public static class Constants public const string IdSIButton9 = "idSIButton9"; + public const string EdgeUserAgentArgument = "--user-agent"; + + public const string MHamburger = "mHamburger"; + + public const string HbS = "hb_s"; + public const string TitleDetailXPath = ".//div[@class='title-detail']"; public const string PointDetailXpath = ".//p[@class='pointsDetail c-subheading-3 ng-binding']"; diff --git a/.Net Core/MSRewards/Program.cs b/.Net Core/MSRewards/Program.cs index bb2e1ac..80fb3e8 100644 --- a/.Net Core/MSRewards/Program.cs +++ b/.Net Core/MSRewards/Program.cs @@ -108,11 +108,9 @@ private async Task Login(IWebDriver driverlocal, WebDriverWait localwait) } catch (Exception ex2) { - Debug.WriteLine(ex2.Message); Debug.WriteLine(ex2.StackTrace); } - } await Task.Delay(3000); @@ -221,21 +219,44 @@ private async Task BingSearch(RewardType rewardType, int current, int target, bo UseChromium = true, }; - var edgeDriver = new EdgeDriver(options); + if (rewardType == RewardType.Mobile) + options.AddArgument($"{ Constants.EdgeUserAgentArgument}={Constants.MobileUserAgent}"); + var edgeDriver = new EdgeDriver(options); edgeDriver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(15); var edgeWait = new WebDriverWait(edgeDriver, TimeSpan.FromSeconds(60)); await Login(edgeDriver, edgeWait); - Search(edgeDriver, edgeWait, Constants.BingSearchURL + "Give me Edge points"); + Search(edgeDriver, edgeWait, Constants.BingSearchURL + "Give me Edge points" ); - await Task.Delay(4000); + await Task.Delay(2000); - var id_p = edgeWait.Until(d => d.FindElement(By.Id(Constants.ID_P))); - if (id_p != null) + try { - id_p?.Click(); + if (rewardType == RewardType.Mobile) + { + var hamburg = edgeWait.Until(d => d.FindElement(By.Id(Constants.MHamburger))); + hamburg?.Click(); + + var signin = edgeWait.Until(d => d.FindElement(By.Id(Constants.HbS))); + signin?.Click(); + + await Task.Delay(3000); + } + else + { + var id_p = edgeWait.Until(d => d.FindElement(By.Id(Constants.ID_P))); + if (id_p != null) + { + id_p?.Click(); + } + } + } + catch (Exception ex) + { + Debug.WriteLine(ex.Message); + Debug.WriteLine(ex.StackTrace); } while (current < target) @@ -262,22 +283,47 @@ private async Task BingSearch(RewardType rewardType, int current, int target, bo else { var options = new FirefoxOptions(); + TimeSpan timeout = TimeSpan.FromSeconds(60); if (rewardType == RewardType.Mobile) + { options.SetPreference(Constants.UserAgentKey, Constants.MobileUserAgent); + timeout = TimeSpan.FromSeconds(30); + } options.SetPreference(Constants.PrivateBrowsingKey, true); using var firefoxDriver = new FirefoxDriver(options); - WebDriverWait driverWait = new WebDriverWait(firefoxDriver, TimeSpan.FromSeconds(120)); + WebDriverWait driverWait = new WebDriverWait(firefoxDriver, timeout); await Login(firefoxDriver, driverWait); firefoxDriver.Navigate().GoToUrl(Constants.BingSearchURL + "Give me edge points"); - await Task.Delay(4000); + await Task.Delay(2000); + + try + { + if (rewardType == RewardType.Mobile) + { + var hamburg = driverWait.Until(d => d.FindElement(By.Id(Constants.MHamburger))); + hamburg?.Click(); + + var signin = driverWait.Until(d => d.FindElement(By.Id(Constants.HbS))); + signin?.Click(); - var id_p = driverWait.Until(d => d.FindElement(By.Id(Constants.ID_P))); - if (id_p != null) + await Task.Delay(3000); + } + else + { + var id_p = driverWait.Until(d => d.FindElement(By.Id(Constants.ID_P))); + if (id_p != null) + { + id_p.Click(); + } + } + } + catch (Exception ex) { - id_p.Click(); + Debug.WriteLine(ex.Message); + Debug.WriteLine(ex.StackTrace); } while (current < target) From 35605326218937f08369c0a270c5a7928f191512 Mon Sep 17 00:00:00 2001 From: Prateek Mahendrakar Date: Tue, 29 Sep 2020 11:17:57 -0400 Subject: [PATCH 3/3] updated exit point --- .Net Core/MSRewards/Program.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.Net Core/MSRewards/Program.cs b/.Net Core/MSRewards/Program.cs index 80fb3e8..c167851 100644 --- a/.Net Core/MSRewards/Program.cs +++ b/.Net Core/MSRewards/Program.cs @@ -154,9 +154,9 @@ private async Task Run(bool useFirefox = false) { Console.WriteLine("Starting Bing Search for " + keyvalue.Key); await BingSearch(keyvalue.Key, current, expected, useFirefox); - Environment.Exit(0); } } + Environment.Exit(0); } private Dictionary CheckBreakDown(IWebDriver webDriver, WebDriverWait waiter)