· 7 years ago · Feb 12, 2019, 09:18 PM
1using System;
2using System.Windows.Forms;
3using OpenQA.Selenium;
4using OpenQA.Selenium.Chrome;
5using OpenQA.Selenium.Support.UI;
6using System.Text.RegularExpressions;
7using Keys = System.Windows.Forms.Keys;
8
9namespace Gmail_Scrape
10{
11 public partial class frm_Gmail : Form
12 {
13 IWebDriver driver;
14
15 public frm_Gmail()
16 {
17 InitializeComponent();
18 // version 1.2
19 }
20
21 private void frm_Gmail_KeyUp(object sender, KeyEventArgs e)
22 {
23 #region Enable & Disable Btn
24 //// Enable & Disable Button
25 //if (txtBox_User.TextLength > 5 && txtBox_Pass.TextLength > 2)
26 //{
27 // btn_Login.Enabled = true;
28 // btn_Delete.Enabled = true;
29 //}
30 //else
31 //{
32 // btn_Login.Enabled = false;
33 // btn_Delete.Enabled = false;
34 //}
35 #endregion
36 }
37
38 private void btn_Login_Click(object sender, EventArgs e)
39 {
40 this.Enabled = false;
41 this.Cursor = Cursors.WaitCursor;
42 using (driver = new ChromeDriver())
43 {
44 try
45 {
46 // Explicit Waits
47 WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(120));
48 // Navigate to Gmail.com
49 driver.Navigate().GoToUrl("https://mail.google.com/mail/");
50
51 // email
52 string email = txtBox_User.Text;
53 // password
54 string pass = txtBox_Pass.Text;
55
56 // Maximize Navigator
57 driver.Manage().Window.Maximize();
58
59 // Enter Email and click next button
60 IWebElement emailSend = wait.Until(ExpectedConditions.ElementToBeClickable(By.XPath("//*[@type='email']")));
61 emailSend.SendKeys(email);
62 IWebElement emailNextClick = wait.Until(ExpectedConditions.ElementToBeClickable(By.XPath("//*[@id='identifierNext']")));
63 emailNextClick.Click();
64
65 // Enter Password and click next button
66 IWebElement passSend = wait.Until(ExpectedConditions.ElementToBeClickable(By.XPath("//*[@type='password']")));
67 passSend.SendKeys(pass);
68 IWebElement passNextClick = driver.FindElement(By.XPath("//*[@id='passwordNext']"));
69 passNextClick.Click();
70
71 // Click to Social Media Messages
72 string value_SM = "Messages provenant de réseaux sociaux, de sites de partage de fichiers multimédia, de sites de rencontre en ligne et autres sites Web sociaux.";
73 IWebElement value_SMClick = wait.Until(ExpectedConditions.ElementToBeClickable(By.XPath("//*[@data-tooltip='" + value_SM + "']")));
74 value_SMClick.Click();
75
76 // Node of button delete
77 string node_Delet = "//div[@class='nH aqK']/div/div/div/div[2]/div[3]";
78 // Node of Selectionner Tout
79 string SelectAll = "//*[@aria-label='Sélectionner']/div[1]/span";
80
81 // see if messages SM exit or not
82 IWebElement slide = wait.Until(ExpectedConditions.ElementToBeClickable(By.XPath("//*[@class='ar5 J-J5-Ji']")));
83 string vide = slide.Text;
84 string rtextSM = "Your \"Social Networks\" tab is empty";
85 string totaleSM = "your Totale social media messages is : ";
86 SelectAndDelet_All(driver, vide, SelectAll, node_Delet, totaleSM, rtextSM);
87
88 // Click to Promotions Messages
89 string value_Promotion = "//*[@data-tooltip='Promotions, offres et autres messages commerciaux.']";
90 IWebElement PromotionClick = wait.Until(ExpectedConditions.ElementToBeClickable(By.XPath(value_Promotion)));
91 PromotionClick.Click();
92 // see if messages PROMO exit or not
93 slide = wait.Until(ExpectedConditions.ElementToBeClickable(By.XPath("//*[@class='ar5 J-J5-Ji']")));
94 vide = slide.Text;
95 string rtextPr = "Your \"Promotions\" tab is empty";
96 string totalePr = "And your Totale Promotions messages is : ";
97 SelectAndDelet_All(driver, vide, SelectAll, node_Delet,totalePr, rtextPr);
98
99 // Close Browser & Driver
100 driver.Close();
101 driver.Quit();
102 // Show Message << your social media messages was deleted >> ..
103 MessageBox.Show("Social Media & Promotions Messages was successful deleted"
104 + "\n\n" + "Gongralutation ..",
105 "Messages Deleted", MessageBoxButtons.OK, MessageBoxIcon.Information);
106 }
107 catch (Exception ex)
108 {
109 MessageBox.Show(ex.Message);
110 }
111 }
112 this.Enabled = true;
113 this.Cursor = Cursors.Default;
114 }
115
116 private void SelectAndDelet_All(IWebDriver driver, string vide, string SelectAll, string node_Delet, string totale, string rtext)
117 {
118 WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(120));
119 bool b = Regex.IsMatch(totale, "social");
120
121 if (vide != " ")
122 {
123 // Declare number of Messages in page
124 string node_NbrOfmessage = "//div[@aria-label='Afficher plus de messages']/span/span[1]/span[2]";
125 IWebElement nbrValue = wait.Until(ExpectedConditions.ElementToBeClickable(By.XPath(node_NbrOfmessage)));
126
127 // Declare number of pages Messages
128 string node_NbrOfPages = "//div[@aria-label='Afficher plus de messages']/span/span[2]";
129 IWebElement nbrOfPage = wait.Until(ExpectedConditions.ElementToBeClickable(By.XPath(node_NbrOfPages)));
130
131 // Start Conversion
132 // convert number of messages in page to integer
133 string nbr_Messages = nbrValue.Text;
134 int j = Convert.ToInt32(nbr_Messages);
135
136 // convert number of pages messages to integer
137 string nbr_Pages = nbrOfPage.Text;
138 // Replace space
139 nbr_Pages = Regex.Replace(nbr_Pages, @"\s", "");
140 int h = Convert.ToInt32(nbr_Pages);
141 // End Conversion.
142
143 // Show informations in Riche Text Box ..
144 if (b)
145 rtxtBox.Text = totale + h;
146 else
147 rtxtBox2.Text = totale + h;
148
149 while (j != h)
150 {
151 // Select All Messages in page
152 IWebElement selectAllClick = wait.Until(ExpectedConditions.ElementToBeClickable(By.XPath(SelectAll)));
153 selectAllClick.Click();
154 // Delet Messages Selected
155 IWebElement DeletClick = wait.Until(ExpectedConditions.ElementToBeClickable(By.XPath(node_Delet)));
156 DeletClick.Click();
157
158 // Restart Value
159 nbrValue = wait.Until(ExpectedConditions.ElementToBeClickable(By.XPath(node_NbrOfmessage)));
160 nbrOfPage = wait.Until(ExpectedConditions.ElementToBeClickable(By.XPath(node_NbrOfPages)));
161 nbr_Messages = nbrValue.Text;
162 j = Convert.ToInt32(nbr_Messages);
163 nbr_Pages = nbrOfPage.Text;
164 nbr_Pages = Regex.Replace(nbr_Pages, @"\s", "");
165 h = Convert.ToInt32(nbr_Pages);
166 }
167
168 if (j == h)
169 {
170 // Select All Messages in page
171 IWebElement selectAllClick = wait.Until(ExpectedConditions.ElementToBeClickable(By.XPath(SelectAll)));
172 selectAllClick.Click();
173 // Delet Messages Selected
174 IWebElement DeletClick = wait.Until(ExpectedConditions.ElementToBeClickable(By.XPath(node_Delet)));
175 DeletClick.Click();
176 }
177 }
178 else
179 {
180 if (b)
181 rtxtBox.Text = rtext;
182 else
183 rtxtBox2.Text = rtext;
184 }
185 }
186
187 private void btn_Exit_Click(object sender, EventArgs e)
188 {
189 Application.Exit();
190 }
191
192 private void txtBox_Pass_KeyPress(object sender, KeyPressEventArgs e)
193 {
194 if (e.KeyChar == (char)Keys.Enter)
195 {
196 btn_Login.PerformClick();
197 }
198 }
199
200 private void btnAbout_Click(object sender, EventArgs e)
201 {
202 AboutBox frmAbout = new AboutBox();
203 frmAbout.ShowDialog();
204 }
205
206 private void btnShow2_Click(object sender, EventArgs e)
207 {
208 txtBox_Pass.PasswordChar = '\0';
209 btnShow2.Visible = false;
210 labelShow.Visible = false;
211 }
212
213 private void btnShow_Click(object sender, EventArgs e)
214 {
215 txtBox_Pass.PasswordChar = char.Parse("â—‰");
216 btnShow2.Visible = true;
217 labelShow.Visible = true;
218 }
219
220 private void txtBox_Pass_KeyUp(object sender, KeyEventArgs e)
221 {
222 // Enable & Diable Button Show
223 //if (txtBox_Pass.TextLength > 1)
224 // btn_Login.Enabled = true;
225 //else
226 // btn_Login.Enabled = false;
227 }
228
229 private void AboutHover1_MouseHover(object sender, EventArgs e)
230 {
231 AboutHover1.Visible = false;
232 }
233
234 private void btnAbout_MouseLeave(object sender, EventArgs e)
235 {
236 AboutHover1.Visible = true;
237 }
238 }
239}