diff --git a/.Net Core/MSRewards/Constants.cs b/.Net Core/MSRewards/Constants.cs
index c2ba305..57e76f8 100644
--- a/.Net Core/MSRewards/Constants.cs
+++ b/.Net Core/MSRewards/Constants.cs
@@ -14,6 +14,20 @@ public static class Constants
public const string RememberMeCheckboxName = "KMSI";
+ public const string ID_P = "id_p";
+
+ public const string B_Results = "b_results";
+
+ public const string H2 = "h2";
+
+ public const string A = "a";
+
+ public const string IdSIButton9 = "idSIButton9";
+
+ public const string TitleDetailXPath = ".//div[@class='title-detail']";
+
+ public const string PointDetailXpath = ".//p[@class='pointsDetail c-subheading-3 ng-binding']";
+
public const string RewardsPageTitle = "Microsoft account | Home";
public const string WordsListUrl = "https://raw.githubusercontent.com/bevacqua/correcthorse/master/wordlist.json";
diff --git a/.Net Core/MSRewards/MSRewards.csproj b/.Net Core/MSRewards/MSRewards.csproj
index a2407e8..2212a2c 100644
--- a/.Net Core/MSRewards/MSRewards.csproj
+++ b/.Net Core/MSRewards/MSRewards.csproj
@@ -7,16 +7,11 @@
MSRewards.Program
-
-
- Always
-
-
-
+
\ No newline at end of file
diff --git a/.Net Core/MSRewards/Options.cs b/.Net Core/MSRewards/Options.cs
index 7993cc1..48219c0 100644
--- a/.Net Core/MSRewards/Options.cs
+++ b/.Net Core/MSRewards/Options.cs
@@ -2,17 +2,15 @@
namespace MSRewards
{
- class Options
+ internal class Options
{
[Option('F', "use-firefox", Required = false, HelpText = "Use Firefox")]
public bool Firefox { get; set; }
-
- [Option('E',"email", Required = true, HelpText = "Email ID")]
+ [Option('E', "email", Required = true, HelpText = "Email ID")]
public string Email { get; set; }
[Option('P', "password", Required = true, HelpText = "password")]
public string Password { get; set; }
-
}
-}
+}
\ No newline at end of file
diff --git a/.Net Core/MSRewards/Program.cs b/.Net Core/MSRewards/Program.cs
index be9838c..95f46a2 100644
--- a/.Net Core/MSRewards/Program.cs
+++ b/.Net Core/MSRewards/Program.cs
@@ -1,6 +1,5 @@
using CommandLine;
using Newtonsoft.Json;
-using Newtonsoft.Json.Linq;
using OpenQA.Selenium;
using OpenQA.Selenium.Edge;
using OpenQA.Selenium.Firefox;
@@ -9,7 +8,6 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
-using System.IO;
using System.Linq;
using System.Net;
using System.Threading.Tasks;
@@ -75,19 +73,52 @@ private async Task Login(IWebDriver driverlocal, WebDriverWait localwait)
//page2
var passwordEntry = localwait?.Until(d => d.FindElement(By.Id(Constants.PasswordEntryId)));
- var checkbox = driverlocal.FindElement(By.Name(Constants.RememberMeCheckboxName));
+ try
+ {
+ var checkbox = driverlocal.FindElement(By.Name(Constants.RememberMeCheckboxName));
+ checkbox?.Click();
+ }
+ catch (Exception ex)
+ {
+ Debug.WriteLine(ex.Message);
+ }
passwordEntry.SendKeys(password);
- checkbox?.Click();
-
passwordEntry.SendKeys(Keys.Enter);
+
+ try
+ {
+ var dontShowThisAgain = localwait.Until(driver => driver.FindElement(By.Id(Constants.CheckboxId)));
+
+ dontShowThisAgain?.Click();
+
+ var yesButton = localwait.Until(d => d.FindElement(By.Id(Constants.IdSIButton9)));
+
+ yesButton?.Click();
+ }
+ catch (Exception ex)
+ {
+ Debug.WriteLine(ex.Message);
+ try
+ {
+ var yesButton = localwait.Until(d => d.FindElement(By.Id(Constants.IdSIButton9)));
+ yesButton?.Click();
+ }
+ catch (Exception ex2)
+ {
+
+ Debug.WriteLine(ex2.Message);
+ }
+
+ }
+
await Task.Delay(3000);
if (localwait.Until(e => e.Title.Equals(Constants.RewardsPageTitle)))
driverlocal.SwitchTo().DefaultContent();
}
- private async Task Run(bool useFirefox = true)
+ private async Task Run(bool useFirefox = false)
{
wordList = DownloadJsonData>(Constants.WordsListUrl);
DriverOptions driverOptions;
@@ -111,7 +142,8 @@ private async Task Run(bool useFirefox = true)
await Login(driver, wait);
var result = CheckBreakDown(driver, wait);
- driver.Close();
+ driver?.Dispose();
+ driver?.Quit();
foreach (var keyvalue in result)
{
var current = keyvalue.Value.x;
@@ -121,6 +153,7 @@ private async Task Run(bool useFirefox = true)
{
Console.WriteLine("Starting Bing Search for " + keyvalue.Key);
await BingSearch(keyvalue.Key, current, expected, useFirefox);
+ Environment.Exit(0);
}
}
}
@@ -134,13 +167,13 @@ private async Task Run(bool useFirefox = true)
var userPointsBreakdown = waiter.Until(d => d.FindElement(By.Id(Constants.UserPointsBreakdownId)));
- var titleDetailsList = waiter.Until(d => userPointsBreakdown.FindElements(By.XPath(".//div[@class='title-detail']")));
+ var titleDetailsList = waiter.Until(d => userPointsBreakdown.FindElements(By.XPath(Constants.TitleDetailXPath)));
foreach (var pointDetail in titleDetailsList)
{
- var href = waiter.Until(p => pointDetail.FindElement(By.TagName("a")));
+ var href = waiter.Until(p => pointDetail.FindElement(By.TagName(Constants.A)));
- var pointDetailsList = waiter.Until(d => pointDetail.FindElements(By.XPath(".//p[@class='pointsDetail c-subheading-3 ng-binding']")));
+ var pointDetailsList = waiter.Until(d => pointDetail.FindElements(By.XPath(Constants.PointDetailXpath)));
try
{
var pointSplits = pointDetailsList.FirstOrDefault()?.Text?.Replace(" ", "").Split("/");
@@ -164,13 +197,13 @@ private async Task Run(bool useFirefox = true)
}
catch (Exception ex)
{
- Console.WriteLine(ex.Message + " \n" + ex.InnerException?.Message);
+ Console.WriteLine(ex.Message + Environment.NewLine + ex.InnerException?.Message);
}
}
return result;
}
- private async Task BingSearch(RewardType rewardType, int current, int target, bool useFirefox = true)
+ private async Task BingSearch(RewardType rewardType, int current, int target, bool useFirefox = false)
{
try
{
@@ -179,63 +212,53 @@ private async Task BingSearch(RewardType rewardType, int current, int target, bo
if (rewardType == RewardType.EdgeBonus || !useFirefox)
{
- using StreamReader r = new StreamReader("Resources.json");
-
- string jsonString = r.ReadToEnd();
- var jsonObject = JObject.Parse(jsonString);
-
- r.Close();
-
- if (jsonObject != null)
+ var options = new EdgeOptions
{
- var edgeBrowser = JsonConvert.DeserializeObject(jsonObject["Edge"].ToString());
+ UseChromium = true,
+ };
- var options = new EdgeOptions
- {
- UseChromium = true,
- BinaryLocation = edgeBrowser.ExecutableName,
- };
- var edgeDriver = new EdgeDriver(options);
+ var edgeDriver = new EdgeDriver(options);
- edgeDriver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(15);
- var edgeWait = new WebDriverWait(edgeDriver, TimeSpan.FromSeconds(60));
+ edgeDriver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(15);
+ var edgeWait = new WebDriverWait(edgeDriver, TimeSpan.FromSeconds(60));
- await Login(edgeDriver, edgeWait);
+ 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(4000);
- var id_p = edgeWait.Until(d => d.FindElement(By.Id("id_p")));
- if (id_p != null)
- {
- id_p?.Click();
- }
+ var id_p = edgeWait.Until(d => d.FindElement(By.Id(Constants.ID_P)));
+ if (id_p != null)
+ {
+ id_p?.Click();
+ }
- while (current < target)
+ while (current < target)
+ {
+ Search(edgeDriver, edgeWait, Constants.BingSearchURL + wordList[rand.Next(wordList.Count)]);
+ current += 5;
+ if (current >= target)
{
- Search(edgeDriver, edgeWait, Constants.BingSearchURL + wordList[rand.Next(wordList.Count)]);
- current += 5;
- if (current >= target)
- {
- var currentBreakDown = CheckBreakDown(edgeDriver, edgeWait);
+ var currentBreakDown = CheckBreakDown(edgeDriver, edgeWait);
- if (currentBreakDown.ContainsKey(rewardType))
- {
- current = currentBreakDown[rewardType].x;
- Console.WriteLine("{0} points of {1} completed", currentBreakDown[rewardType].x, currentBreakDown[rewardType].y);
- }
+ if (currentBreakDown.ContainsKey(rewardType))
+ {
+ current = currentBreakDown[rewardType].x;
+ Console.WriteLine("{0} points of {1} completed", currentBreakDown[rewardType].x, currentBreakDown[rewardType].y);
}
}
- edgeDriver.Close();
}
+ edgeDriver?.Dispose();
+ edgeDriver?.Quit();
+ //}
}
//Use Firefox
else
{
var options = new FirefoxOptions();
if (rewardType == RewardType.Mobile)
- options.SetPreference(Constants.UserAgentKey, Constants.EdgeUserAgent);
+ options.SetPreference(Constants.UserAgentKey, Constants.MobileUserAgent);
options.SetPreference(Constants.PrivateBrowsingKey, true);
using var firefoxDriver = new FirefoxDriver(options);
@@ -246,7 +269,7 @@ private async Task BingSearch(RewardType rewardType, int current, int target, bo
await Task.Delay(4000);
- var id_p = driverWait.Until(d => d.FindElement(By.Id("id_p")));
+ var id_p = driverWait.Until(d => d.FindElement(By.Id(Constants.ID_P)));
if (id_p != null)
{
id_p.Click();
@@ -267,7 +290,8 @@ private async Task BingSearch(RewardType rewardType, int current, int target, bo
}
}
}
- firefoxDriver.Close();
+ firefoxDriver?.Dispose();
+ firefoxDriver?.Quit();
}
}
catch (Exception ex)
@@ -275,7 +299,6 @@ private async Task BingSearch(RewardType rewardType, int current, int target, bo
Debug.WriteLine(ex.Message);
Debug.WriteLine(ex.StackTrace);
}
-
}
private void Search(IWebDriver driver, WebDriverWait wait, string url)
@@ -283,14 +306,14 @@ private void Search(IWebDriver driver, WebDriverWait wait, string url)
try
{
driver.Navigate().GoToUrl(url);
- wait.Until(e => e.FindElement(By.Id("b_results")));
+ wait.Until(e => e.FindElement(By.Id(Constants.B_Results)));
- var result = driver.FindElement(By.TagName("h2"));
+ var result = driver.FindElement(By.TagName(Constants.H2));
Console.WriteLine(result?.Text);
}
catch (Exception ex)
{
- Console.WriteLine(ex.Message + "\n" + ex.InnerException?.Message);
+ Console.WriteLine(ex.Message + Environment.NewLine + ex.InnerException?.Message);
}
}
}
diff --git a/.Net Core/MSRewards/Resources.json b/.Net Core/MSRewards/Resources.json
deleted file mode 100644
index fb494f7..0000000
--- a/.Net Core/MSRewards/Resources.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "Edge": {
- "DriverLocation": "C:\\Users\\Prateek\\MiscExes",
- "DriverExecutableName": "msedgedriver.exe",
- "ExecutableName": "C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe"
- }
-}
\ No newline at end of file