Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using OpenQA.Selenium;
- using OpenQA.Selenium.Firefox;
- using OpenQA.Selenium.Support.UI;
- using OpenQA.Selenium.Interactions;
- using System.Diagnostics;
- using System.Text.RegularExpressions;
- using System.IO;
- using Newtonsoft.Json;
- using System.Collections.Generic;
- using System.Net.Mail;
- using System.Net;
- /*
- https://onlineservices.immigration.govt.nz/WORKINGHOLIDAY/Application/Create.aspx?CountryId=106
- donde CountryId puede ser:
- Italy = 106
- Germany = 82
- Argentina = 13
- */
- namespace ConsoleApplication2
- {
- class Program
- {
- public static String idform { get; set; }
- public static IWebDriver driver { get; set; }
- static void Main(string[] args)
- {
- int countR = 0;
- FirefoxProfile profile = new FirefoxProfile();
- profile.SetPreference("webdriver.load.strategy", "unstable");
- driver = new FirefoxDriver(profile);
- driver.Manage().Timeouts().SetPageLoadTimeout(TimeSpan.FromMilliseconds(100));
- WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(999999));
- String url = "";
- int etapa = 0;
- // deserialize JSON directly from a file
- String data = File.ReadAllText("data.json");
- Dictionary<string, string> info = JsonConvert.DeserializeObject<Dictionary<string, string>>(data);
- while (true)
- {
- try
- {
- //Errores
- if (driver.FindElements(By.Id("ctl00_ContentPlaceHolder1_statusLabel")).Count > 0)
- {
- if (driver.FindElements(By.Id("ctl00_ContentPlaceHolder1_statusLabel"))[0].Text.Contains("Unfortunately the available places for this Working Holiday Scheme have been filled ")
- || driver.FindElements(By.Id("ctl00_ContentPlaceHolder1_statusLabel"))[0].Text.Contains("There is no scheme open for this country."))
- {
- Console.Write("N/F(" + countR.ToString() + ")");
- countR++;
- System.Threading.Thread.Sleep(int.Parse(info["timeWait"]));
- driver.ir("about:blank");
- System.Threading.Thread.Sleep(1000);
- driver.ir("https://onlineservices.immigration.govt.nz/WORKINGHOLIDAY/Application/Create.aspx?CountryId=" + info["countryApply"]);
- }
- }
- if (driver.FindElements(By.Id("ctl00_ContentPlaceHolder1_errorMessageLabel")).Count > 0)
- {
- if (driver.FindElements(By.Id("ctl00_ContentPlaceHolder1_errorMessageLabel"))[0].Text.Contains("Multiple applications are not supported."))
- {
- driver.ir("https://onlineservices.immigration.govt.nz/WorkingHoliday/");
- Console.Write("Acceda al formulario y elija la etapa en la que se quedo: ");
- etapa = Convert.ToInt32(Console.ReadLine());
- }
- }
- if (driver.FindElements(By.Id("errorTryAgain")).Count > 0){
- url = driver.Url;
- driver.ir("about:blank");
- System.Threading.Thread.Sleep(int.Parse(info["timeWait"]));
- driver.ir(url);
- }
- if (driver.FindElements(By.Id("Heading")).Count > 0)
- if (driver.FindElements(By.Id("Heading"))[0].Text.Contains("Access denied"))
- etapa = 0;
- if (driver.Url.Contains("error.html"))
- {
- driver.Navigate().Back();
- etapa -= 1;
- }
- if (driver.PageSource.Contains("Invalid Request"))
- {
- Console.Write("Invalid Request.. restarting. \n");
- driver.Quit();
- driver = new FirefoxDriver(profile);
- driver.Manage().Timeouts().SetPageLoadTimeout(TimeSpan.FromMilliseconds(100));
- wait = new WebDriverWait(driver, TimeSpan.FromSeconds(100));
- etapa = 0;
- }
- if (etapa > 2)
- wait.Until(driver => driver.Scripts().ExecuteScript("return document.readyState;").Equals("complete"));
- switch (etapa)
- {
- case 0:
- etapa++;
- driver.ir("https://onlineservices.immigration.govt.nz/secure/Login+Working+Holiday.htm");
- break;
- case 1:
- wait.Until(ExpectedConditions.ElementToBeClickable(By.Id("OnlineServicesLoginStealth_VisaLoginControl_loginImageButton")));
- etapa++;
- driver.Scripts().ExecuteScript(string.Format(@"
- $('#OnlineServicesLoginStealth_VisaLoginControl_userNameTextBox').val('{0}');
- $('#OnlineServicesLoginStealth_VisaLoginControl_passwordTextBox').val('{1}');
- $('#OnlineServicesLoginStealth_VisaLoginControl_loginImageButton').click();
- ",info["user"],info["password"]));
- break;
- case 2:
- wait.Until(ExpectedConditions.TitleContains("Find a Visa homepage"));
- etapa++;
- driver.ir("https://onlineservices.immigration.govt.nz/WORKINGHOLIDAY/Application/Create.aspx?CountryId=" + info["countryApply"]);
- break;
- case 3:
- if (driver.FindElements(By.Id("ctl00_ContentPlaceHolder1_applyNowButton")).Count > 0)
- {
- Console.Write("Found \n");
- etapa++;
- driver.FindElement(By.Id("ctl00_ContentPlaceHolder1_applyNowButton")).Click();
- }
- break;
- case 4:
- driver.FindElement(By.Id("ctl00_ContentPlaceHolder1_personDetails_familyNameTextBox"));
- url = driver.Url;
- Console.WriteLine("Personal information 1.");
- driver.Scripts().ExecuteScript(string.Format(@"
- document.getElementById('ctl00_ContentPlaceHolder1_personDetails_familyNameTextBox').value='{0}'
- document.getElementById('ctl00_ContentPlaceHolder1_personDetails_givenName1Textbox').value='{1}'
- document.getElementById('ctl00_ContentPlaceHolder1_personDetails_genderDropDownList').value='{2}'
- document.getElementById('ctl00_ContentPlaceHolder1_personDetails_dateOfBithDatePicker_Day').value='{3}'
- document.getElementById('ctl00_ContentPlaceHolder1_personDetails_dateOfBithDatePicker_Month').value='{4}'
- document.getElementById('ctl00_ContentPlaceHolder1_personDetails_dateOfBithDatePicker_Year').value='{5}'
- document.getElementById('ctl00_ContentPlaceHolder1_personDetails_CountryDropDownList').value='13'
- document.getElementById('ctl00_ContentPlaceHolder1_addressContactDetails_address_streetNumberTextbox').value='{6}'
- document.getElementById('ctl00_ContentPlaceHolder1_addressContactDetails_address_address1TextBox').value='{7}'
- document.getElementById('ctl00_ContentPlaceHolder1_addressContactDetails_address_suburbTextBox').value='{8}'
- document.getElementById('ctl00_ContentPlaceHolder1_addressContactDetails_address_cityTextBox').value='{9}'
- document.getElementById('ctl00_ContentPlaceHolder1_addressContactDetails_address_provinceStateTextBox').value='{10}'
- document.getElementById('ctl00_ContentPlaceHolder1_addressContactDetails_address_postalCodeTextBox').value='{11}'
- document.getElementById('ctl00_ContentPlaceHolder1_addressContactDetails_address_countryDropDownList').value='{12}'
- document.getElementById('ctl00_ContentPlaceHolder1_addressContactDetails_contactDetails_emailAddressTextBox').value='{13}'
- document.getElementById('ctl00_ContentPlaceHolder1_hasAgent_representedByAgentDropdownlist').value='No'
- document.getElementById('ctl00_ContentPlaceHolder1_communicationMethod_communicationMethodDropDownList').value='1'
- document.getElementById('ctl00_ContentPlaceHolder1_hasCreditCard_hasCreditCardDropDownlist').value='Yes'
- ", info["familyName"]
- , info["givenName"]
- , info["gender"]
- , info["dayBirth"]
- , info["monthBirth"]
- , info["yearBirth"]
- , info["streetNumber"]
- , info["streetName"]
- , info["suburb"]
- , info["city"]
- , info["provinceState"]
- , info["zipCode"]
- , info["country"]
- , info["email"]));
- etapa++;
- driver.FindElement(By.Id("ctl00_ContentPlaceHolder1_wizardPageFooter_wizardPageNavigator_nextImageButton")).Click();
- break;
- case 5:
- driver.FindElement(By.Id("ctl00_ContentPlaceHolder1_identification_passportNumberTextBox"));
- Console.WriteLine("Personal information 2.");
- driver.Scripts().ExecuteScript(string.Format(@"
- document.getElementById('ctl00_ContentPlaceHolder1_identification_passportNumberTextBox').value = '{0}'
- document.getElementById('ctl00_ContentPlaceHolder1_identification_confirmPassportNumberTextBox').value = '{0}'
- document.getElementById('ctl00_ContentPlaceHolder1_identification_passportExpiryDateDatePicker_Day').value = '{1}'
- document.getElementById('ctl00_ContentPlaceHolder1_identification_passportExpiryDateDatePicker_Month').value = '{2}'
- document.getElementById('ctl00_ContentPlaceHolder1_identification_passportExpiryDateDatePicker_Year').value = '{3}'
- document.getElementById('ctl00_ContentPlaceHolder1_identification_otherIdentificationDropdownlist').value = '{4}'
- document.getElementById('ctl00_ContentPlaceHolder1_identification_otherIssueDateDatePicker_Day').value = '{5}'
- document.getElementById('ctl00_ContentPlaceHolder1_identification_otherIssueDateDatePicker_Month').value = '{6}'
- document.getElementById('ctl00_ContentPlaceHolder1_identification_otherIssueDateDatePicker_Year').value = '{7}'
- "
- , info["passport"]
- , info["passportEDay"]
- , info["passportEMonth"]
- , info["passportEYear"]
- , info["idType"]
- , info["idEmitDay"]
- , info["idEmitMonth"]
- , info["idEmitYear"]));
- etapa++;
- driver.FindElement(By.Id("ctl00_ContentPlaceHolder1_wizardPageHeader_nav_sectionTabs_TabHeaders_ctl01_tabButton")).Click();
- break;
- case 6:
- driver.FindElement(By.Id("ctl00_ContentPlaceHolder1_medicalConditions_renalDialysisDropDownList"));
- Console.WriteLine("Health.");
- driver.Scripts().ExecuteScript(@"
- document.getElementById('ctl00_ContentPlaceHolder1_medicalConditions_renalDialysisDropDownList').value = 'No'
- document.getElementById('ctl00_ContentPlaceHolder1_medicalConditions_tuberculosisDropDownList').value = 'No'
- document.getElementById('ctl00_ContentPlaceHolder1_medicalConditions_cancerDropDownList').value = 'No'
- document.getElementById('ctl00_ContentPlaceHolder1_medicalConditions_heartDiseaseDropDownList').value = 'No'
- document.getElementById('ctl00_ContentPlaceHolder1_medicalConditions_disabilityDropDownList').value = 'No'
- document.getElementById('ctl00_ContentPlaceHolder1_medicalConditions_hospitalisationDropDownList').value = 'No'
- document.getElementById('ctl00_ContentPlaceHolder1_medicalConditions_residentailCareDropDownList').value = 'No'
- document.getElementById('ctl00_ContentPlaceHolder1_medicalConditions_tbRiskDropDownList').value = 'Yes'
- ");
- if (info["gender"] == "F")
- {
- driver.Scripts().ExecuteScript(@"
- document.getElementById('ctl00_ContentPlaceHolder1_medicalConditions_pregnancy_pregnancyStatusDropDownList').value = 'No'");
- }
- etapa++;
- driver.FindElement(By.Id("ctl00_ContentPlaceHolder1_wizardPageFooter_wizardPageNavigator_nextImageButton")).Click();
- break;
- case 7:
- driver.FindElement(By.Id("ctl00_ContentPlaceHolder1_character_imprisonment5YearsDropDownList"));
- Console.WriteLine("Character.");
- driver.Scripts().ExecuteScript(@"
- document.getElementById('ctl00_ContentPlaceHolder1_character_imprisonment5YearsDropDownList').value = 'No'
- document.getElementById('ctl00_ContentPlaceHolder1_character_imprisonment12MonthsDropDownList').value = 'No'
- document.getElementById('ctl00_ContentPlaceHolder1_character_removalOrderDropDownList').value = 'No'
- document.getElementById('ctl00_ContentPlaceHolder1_character_deportedDropDownList').value = 'No'
- document.getElementById('ctl00_ContentPlaceHolder1_character_chargedDropDownList').value = 'No'
- document.getElementById('ctl00_ContentPlaceHolder1_character_convictedDropDownList').value = 'No'
- document.getElementById('ctl00_ContentPlaceHolder1_character_underInvestigationDropDownList').value = 'No'
- document.getElementById('ctl00_ContentPlaceHolder1_character_excludedDropDownList').value = 'No'
- document.getElementById('ctl00_ContentPlaceHolder1_character_removedDropDownList').value = 'No'
- ");
- etapa++;
- driver.FindElement(By.Id("ctl00_ContentPlaceHolder1_wizardPageFooter_wizardPageNavigator_nextImageButton")).Click();
- break;
- case 8:
- driver.FindElement(By.Id("ctl00_ContentPlaceHolder1_offshoreDetails_commonWHSQuestions_previousWhsPermitVisaDropDownList"));
- Console.WriteLine("Working Holiday Specific.");
- driver.Scripts().ExecuteScript(string.Format(@"
- document.getElementById('ctl00_ContentPlaceHolder1_offshoreDetails_commonWHSQuestions_previousWhsPermitVisaDropDownList').value = 'No'
- document.getElementById('ctl00_ContentPlaceHolder1_offshoreDetails_commonWHSQuestions_sufficientFundsHolidayDropDownList').value = 'Yes'
- document.getElementById('ctl00_ContentPlaceHolder1_offshoreDetails_intendedTravelDateDatePicker_Day').value = '{0}'
- document.getElementById('ctl00_ContentPlaceHolder1_offshoreDetails_intendedTravelDateDatePicker_Month').value = '{1}'
- document.getElementById('ctl00_ContentPlaceHolder1_offshoreDetails_intendedTravelDateDatePicker_Year').value = '{2}'
- document.getElementById('ctl00_ContentPlaceHolder1_offshoreDetails_beenToNzDropDownList').value = 'No'
- document.getElementById('ctl00_ContentPlaceHolder1_offshoreDetails_requirementsQuestions_sufficientFundsOnwardTicketDropDownList').value = 'Yes'
- document.getElementById('ctl00_ContentPlaceHolder1_offshoreDetails_requirementsQuestions_readRequirementsDropDownList').value = 'Yes'
- "
- , info["travelDay"]
- , info["travelMonth"]
- , info["travelYear"]
- ));
- etapa++;
- driver.FindElement(By.Id("ctl00_ContentPlaceHolder1_wizardPageFooter_wizardPageNavigator_validateButton")).Click();
- break;
- case 9:
- driver.FindElement(By.Id("ctl00_ContentPlaceHolder1_wizardPageFooter_wizardPageNavigator_submitImageButton"));
- Console.WriteLine("Submit!");
- etapa++;
- driver.FindElement(By.Id("ctl00_ContentPlaceHolder1_wizardPageFooter_wizardPageNavigator_submitImageButton")).Click();
- break;
- case 10:
- driver.FindElement(By.Id("ctl00_ContentPlaceHolder1_falseStatementCheckBox"));
- Console.WriteLine("Confirmando que todo esta bien...");
- driver.Scripts().ExecuteScript(@"
- document.getElementById('ctl00_ContentPlaceHolder1_falseStatementCheckBox').checked = true
- document.getElementById('ctl00_ContentPlaceHolder1_notesCheckBox').checked = true
- document.getElementById('ctl00_ContentPlaceHolder1_circumstancesCheckBox').checked = true
- document.getElementById('ctl00_ContentPlaceHolder1_warrantsCheckBox').checked = true
- document.getElementById('ctl00_ContentPlaceHolder1_informationCheckBox').checked = true
- document.getElementById('ctl00_ContentPlaceHolder1_healthCheckBox').checked = true
- document.getElementById('ctl00_ContentPlaceHolder1_adviceCheckBox').checked = true
- document.getElementById('ctl00_ContentPlaceHolder1_registrationCheckBox').checked = true
- document.getElementById('ctl00_ContentPlaceHolder1_entitlementCheckbox').checked = true
- document.getElementById('ctl00_ContentPlaceHolder1_permitExpiryCheckBox').checked = true
- document.getElementById('ctl00_ContentPlaceHolder1_medicalInsuranceCheckBox').checked = true
- ");
- etapa++;
- driver.FindElement(By.Id("ctl00_ContentPlaceHolder1_submitImageButton")).Click();
- break;
- case 11:
- driver.FindElement(By.Id("ctl00_ContentPlaceHolder1_payAnchor"));
- Console.WriteLine("Aceptando que hay que pagar...");
- etapa++;
- driver.FindElement(By.Id("ctl00_ContentPlaceHolder1_payAnchor")).Click();
- break;
- case 12:
- driver.FindElement(By.Id("ctl00_ContentPlaceHolder1_onlinePaymentAnchor"));
- Console.WriteLine("Yendo a sitio seguro de pago");
- etapa++;
- driver.FindElement(By.Id("ctl00_ContentPlaceHolder1_onlinePaymentAnchor")).Click();
- break;
- case 13:
- driver.FindElement(By.Id("ctl00_ContentPlaceHolder1_okImageButton"));
- Console.WriteLine("Llenar: Payer Name");
- driver.Scripts().ExecuteScript(string.Format(@"
- document.getElementById('ctl00_ContentPlaceHolder1_payorNameTextBox').value = '{0}'
- ",info["payerName"]));
- etapa++;
- driver.FindElement(By.Id("ctl00_ContentPlaceHolder1_okImageButton")).Click();
- break;
- case 14:
- driver.FindElement(By.Id("card_type_VISA"));
- Console.WriteLine("Select VISA");
- etapa++;
- driver.FindElement(By.Id("card_type_VISA")).Click();
- break;
- case 15:
- driver.FindElement(By.Id("pay_button"));
- Console.WriteLine("Llenar: Datos de la tarjeta");
- driver.Scripts().ExecuteScript(string.Format(@"
- document.getElementById('cardnumber').value = '{0}'
- document.getElementById('cardverificationcode').value = '{1}'
- document.getElementById('expirymonth').value = '{2}'
- document.getElementById('expiryyear').value = '{3}'
- document.getElementById('cardholder').value = '{4}'
- "
- , info["cardNumber"]
- , info["cardCode"]
- , info["eMonth"]
- , info["eYear"]
- , info["cardName"]
- ));
- etapa++;
- if (info["countryApply"].Equals("13"))
- {
- var fromAddress = new MailAddress("mail@mail.com", "Visa NZ");
- var toAddress = new MailAddress("mail@mail.com", "Yo");
- const string fromPassword = "";
- const string subject = "VISA PAGA";
- const string body = "VISA PAGA";
- var smtp = new SmtpClient
- {
- Host = "smtp.gmail.com",
- Port = 587,
- EnableSsl = true,
- DeliveryMethod = SmtpDeliveryMethod.Network,
- UseDefaultCredentials = false,
- Credentials = new NetworkCredential(fromAddress.Address, fromPassword),
- };
- using (var message = new MailMessage(fromAddress, toAddress)
- {
- Subject = subject,
- Body = body
- })
- {
- smtp.Send(message);
- }
- driver.FindElement(By.Id("pay_button")).Click();
- }
- /*sw.Stop();
- Console.WriteLine("Elapsed= {0} ", sw.Elapsed);
- idform = Regex.Match(url, "(?<=ApplicationId=)(.*?)(?=&)").Value;
- driver.ir("https://onlineservices.immigration.govt.nz/WorkingHoliday/Application/Delete.aspx?ApplicationId="+idform);
- wait.Until(ExpectedConditions.ElementToBeClickable(By.Id("ctl00_ContentPlaceHolder1_okDeleteButton")));
- driver.FindElement(By.Id("ctl00_ContentPlaceHolder1_okDeleteButton")).Click();
- wait.Until(ExpectedConditions.ElementIsVisible(By.Id("ctl00_ContentPlaceHolder1_postDeletePanel")));
- etapa = 3;
- driver.ir("https://onlineservices.immigration.govt.nz/WORKINGHOLIDAY/Application/Create.aspx?CountryId=106");
- sw.Reset();
- sw.Start();*/
- break;
- case 16:
- return;
- default:
- break;
- }
- }
- catch (Exception e)
- {
- System.Threading.Thread.Sleep(500);
- }
- }
- }
- }
- public static class WebDriverExtensions
- {
- public static IWebElement FindElement(this IWebDriver driver, By by, int timeoutInSeconds)
- {
- if (timeoutInSeconds > 0)
- {
- var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(timeoutInSeconds));
- return wait.Until(ExpectedConditions.ElementExists(by));
- }
- return driver.FindElement(by);
- }
- public static IJavaScriptExecutor Scripts(this IWebDriver driver)
- {
- return (IJavaScriptExecutor)driver;
- }
- public static string ir(this IWebDriver driver, string url)
- {
- try { driver.Url = url; return driver.Url; } catch (Exception e) { return ""; }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement