· 7 years ago · Jan 07, 2019, 04:30 PM
1using System;
2using System.Collections.Generic;
3using System.ComponentModel;
4using System.Data;
5using System.Drawing;
6using System.Linq;
7using System.Text;
8using System.Threading.Tasks;
9using System.Windows.Forms;
10using OpenQA.Selenium;
11using OpenQA.Selenium.Support.UI;
12using OpenQA.Selenium.Chrome;
13using System.Threading;
14using System.Text.RegularExpressions;
15using Keys = System.Windows.Forms.Keys;
16
17namespace Gmail_Scrape
18{
19 public partial class frm_Gmail : Form
20 {
21 public frm_Gmail()
22 {
23 InitializeComponent();
24 }
25
26 private void frm_Gmail_KeyUp(object sender, KeyEventArgs e)
27 {
28 //// Enable & Disable Button
29 //if (txtBox_User.TextLength > 5 && txtBox_Pass.TextLength > 2)
30 //{
31 // btn_Login.Enabled = true;
32 // btn_Delete.Enabled = true;
33 //}
34 //else
35 //{
36 // btn_Login.Enabled = false;
37 // btn_Delete.Enabled = false;
38 //}
39 }
40
41 private void btn_Login_Click(object sender, EventArgs e)
42 {
43 this.Enabled = false;
44 this.Cursor = Cursors.WaitCursor;
45
46 try
47 {
48 // Declare Url of Gmail
49 string UrlGmail = "https://mail.google.com/mail/";
50
51 // email & node email
52 string email = txtBox_User.Text;
53 string Node_email = "//*[@type='email']";
54
55 // password & node password
56 string pass = txtBox_Pass.Text;
57 string Node_pass = "//*[@type='password']";
58
59 // Nodes of Button Next
60 string email_Next = "//*[@id='identifierNext']";
61 string pass_Next = "//*[@id='passwordNext']";
62
63 // Create the reference for our browser
64 IWebDriver driver = new ChromeDriver(); // path of chrome driver is Optional
65
66 // Navigate to Gmail.com
67 driver.Navigate().GoToUrl(UrlGmail);
68
69 // Maximize Navigator
70 driver.Manage().Window.Maximize();
71
72 // Enter Email and click next button
73 driver.FindElement(By.XPath(Node_email)).SendKeys(email);
74 driver.FindElement(By.XPath(email_Next)).Click();
75
76 Thread.Sleep(4000); // Wait 4 milisecond
77 //driver.Manage().Timeouts().PageLoadTimeout(TimeSpan.FromSeconds(40));
78
79 // Enter Password and click next button
80 driver.FindElement(By.XPath(Node_pass)).SendKeys(pass);
81 driver.FindElement(By.XPath(pass_Next)).Click();
82
83 Thread.Sleep(4000); // Wait 4 milisecond
84
85 // Click to Social Media Messages
86 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.";
87 driver.FindElement(By.XPath("//*[@data-tooltip='" + value_SM + "']")).Click();
88
89 // Node of button delete
90 string node_Delet = "//div[@class='nH aqK']/div/div/div/div[2]/div[3]";
91
92 // Node of Selectionner Tout
93 string SelectAll = "//*[@aria-label='Sélectionner']/div[1]/span";
94
95 // see if messages SM exit or not
96 IWebElement slide = driver.FindElement(By.XPath("//*[@class='ar5 J-J5-Ji']"));
97 string vide = slide.Text;
98 if (vide != " ")
99 {
100 // Declare number of Messages in page
101 string node_NbrOfmessage = "//div[@aria-label='Afficher plus de messages']/span/span[1]/span[2]";
102 IWebElement nbrValue = driver.FindElement(By.XPath(node_NbrOfmessage));
103
104 // Declare number of pages Messages
105 string node_NbrOfPages = "//div[@aria-label='Afficher plus de messages']/span/span[2]";
106 IWebElement nbrOfPage = driver.FindElement(By.XPath(node_NbrOfPages));
107
108 // Start Conversion
109 // convert number of messages in page to integer
110 string nbr_Messages = nbrValue.Text;
111 int j = Convert.ToInt32(nbr_Messages);
112
113 // convert number of pages messages to integer
114 string nbr_Pages = nbrOfPage.Text;
115 // Replace space
116 nbr_Pages = Regex.Replace(nbr_Pages, @"\s", "");
117 int h = Convert.ToInt32(nbr_Pages);
118 // End Conversion.
119
120 // Show informations in Riche Text Box ..
121 rtxtBox.Text = "your Totale social media messages is : " + h + "\n\n";
122
123 while (j != h)
124 {
125 // Select All Messages in page
126 driver.FindElement(By.XPath(SelectAll)).Click();
127
128 // Delet Messages Selected
129 driver.FindElement(By.XPath(node_Delet)).Click();
130 Thread.Sleep(12000);
131
132 // Restart Value
133 nbrValue = driver.FindElement(By.XPath(node_NbrOfmessage));
134 nbrOfPage = driver.FindElement(By.XPath(node_NbrOfPages));
135 nbr_Messages = nbrValue.Text;
136 j = Convert.ToInt32(nbr_Messages);
137 nbr_Pages = nbrOfPage.Text;
138 nbr_Pages = Regex.Replace(nbr_Pages, @"\s", "");
139 h = Convert.ToInt32(nbr_Pages);
140 }
141
142 if (j == h)
143 {
144 // Select All Messages in page
145 driver.FindElement(By.XPath(SelectAll)).Click();
146
147 // Delet Messages Selected
148 driver.FindElement(By.XPath(node_Delet)).Click();
149 }
150 }
151 else
152 rtxtBox.Text = "Your \"Social Networks\" tab is empty";
153
154 // Click to Promotions Messages
155 string value_Promotion = "//*[@data-tooltip='Promotions, offres et autres messages commerciaux.']";
156 driver.FindElement(By.XPath(value_Promotion)).Click();
157
158 // see if messages PROMO exit or not
159 slide = driver.FindElement(By.XPath("//*[@class='ar5 J-J5-Ji']"));
160 vide = slide.Text;
161 if (vide != " ")
162 {
163 // Declare number of Messages in page
164 string node_NbrOfmessageP = "//div[@aria-label='Afficher plus de messages']/span/span[1]/span[2]";
165 IWebElement nbrValueP = driver.FindElement(By.XPath(node_NbrOfmessageP));
166
167 // Declare number of pages Messages
168 string node_NbrOfPagesP = "//div[@aria-label='Afficher plus de messages']/span/span[2]";
169 IWebElement nbrOfPageP = driver.FindElement(By.XPath(node_NbrOfPagesP));
170
171 // Start Conversion
172 // convert number of messages in page to integer
173 string nbr_MessagesP = nbrValueP.Text;
174 int jj = Convert.ToInt32(nbr_MessagesP);
175
176 // convert number of pages messages to integer
177 string nbr_PagesP = nbrOfPageP.Text;
178 nbr_PagesP = Regex.Replace(nbr_PagesP, @"\s", "");
179 int hh = Convert.ToInt32(nbr_PagesP);
180 // End Conversion.
181
182 // Show informations in Riche Text Box ..
183 rtxtBox2.Text = "And your Totale Promotions messages is : " + hh + "\n\n";
184
185 while (jj != hh)
186 {
187 // Select All Messages in page
188 driver.FindElement(By.XPath(SelectAll)).Click();
189
190 // Delet Messages Selected
191 driver.FindElement(By.XPath(node_Delet)).Click();
192 Thread.Sleep(12000);
193
194 // Restart Value
195 nbrValueP = driver.FindElement(By.XPath(node_NbrOfmessageP));
196 nbrOfPageP = driver.FindElement(By.XPath(node_NbrOfPagesP));
197 nbr_MessagesP = nbrValueP.Text;
198 jj = Convert.ToInt32(nbr_MessagesP);
199 nbr_PagesP = nbrOfPageP.Text;
200 nbr_PagesP = Regex.Replace(nbr_PagesP, @"\s", "");
201 hh = Convert.ToInt32(nbr_PagesP);
202 }
203
204 if (jj == hh)
205 {
206 // Select All Messages in page
207 driver.FindElement(By.XPath(SelectAll)).Click();
208
209 // Delet Messages Selected
210 driver.FindElement(By.XPath(node_Delet)).Click();
211 Thread.Sleep(1000);
212 }
213 }
214 else
215 rtxtBox2.Text = "Your \"Promotions\" tab is empty";
216
217 // Close Browser & Driver
218 driver.Close();
219 driver.Quit();
220 }
221 catch (Exception ex)
222 {
223 MessageBox.Show(ex.Message);
224 }
225
226 this.Enabled = true;
227 this.Cursor = Cursors.Default;
228
229 // Show Message << your social media messages was deleted >> ..
230 MessageBox.Show("Social Media & Promotions Messages was successful deleted"
231 +"\n\n"+"Gongralutation ..",
232 "Messages Deleted",MessageBoxButtons.OK,MessageBoxIcon.Information);
233
234 }
235
236 private void btn_Exit_Click(object sender, EventArgs e)
237 {
238 Application.Exit();
239 }
240
241 private void txtBox_Pass_KeyPress(object sender, KeyPressEventArgs e)
242 {
243 if (e.KeyChar == (char)Keys.Enter)
244 {
245 btn_Login.PerformClick();
246 }
247 }
248
249 private void btnAbout_Click(object sender, EventArgs e)
250 {
251 AboutBox frmAbout = new AboutBox();
252 frmAbout.ShowDialog();
253 }
254
255 private void btnShow2_Click(object sender, EventArgs e)
256 {
257 txtBox_Pass.PasswordChar = '\0';
258 btnShow2.Visible = false;
259 labelShow.Visible = false;
260 }
261
262 private void btnShow_Click(object sender, EventArgs e)
263 {
264 txtBox_Pass.PasswordChar = char.Parse("â—‰");
265 btnShow2.Visible = true;
266 labelShow.Visible = true;
267 }
268
269 private void txtBox_Pass_KeyUp(object sender, KeyEventArgs e)
270 {
271 // Enable & Diable Button Show
272 //if (txtBox_Pass.TextLength > 1)
273 // btn_Login.Enabled = true;
274 //else
275 // btn_Login.Enabled = false;
276 }
277
278 private void AboutHover1_MouseHover(object sender, EventArgs e)
279 {
280 AboutHover1.Visible = false;
281 }
282
283 private void btnAbout_MouseLeave(object sender, EventArgs e)
284 {
285 AboutHover1.Visible = true;
286 }
287 }
288}