private void ExecutarProcesso() { SeleniumModel model = new SeleniumModel() { Browser = Utils.Enum.BrowserEnum.Chrome, DriverPath = @"D:\Projetos\AutomacaoRobo\Selenium.Utils\Drivers\", Login = this.txtEmail.Text, Senha = this.txtSenha.Text, OcultarJanela = !this.ckVizualizar.Checked, TimeOutAplicacao = TimeSpan.FromSeconds(30), Url = "https://seguro.catho.com.br/signin/", Sistema = Utils.Enum.SistemaEnum.Catho, NomeUsuario = this.txtNome.Text.Split(' ')[0], Cargos = new List <string>(this.txtCargo.Text.Split(' ')), ResumoProfissional = this.txtResumo.Text }; try { CoreAutomacao core = new CoreAutomacao(); var response = core.Processar(model); } catch (Exception ex) { } ProcessoFinalizado = true; }
public Response Processar(SeleniumModel selenium) { bool retorno = false; string mensagem = ValidarDados(selenium); if (!String.IsNullOrEmpty(mensagem)) { return(new Response(mensagem, LevelLogEnum.Erro)); } switch (selenium.Sistema) { case SistemaEnum.Catho: CathoScreen catho = new CathoScreen(selenium); retorno = catho.Iniciar(); break; // TODO - Implementar } if (retorno) { return(new Response("Processamento Ok", LevelLogEnum.Info)); } else { return(new Response("Erro no procesamento", LevelLogEnum.Erro)); } }
static void Main(string[] args) { SeleniumModel model = new SeleniumModel() { Login = "", Senha = "", NomeUsuario = "", Cargos = new List <string>() { "" }, ResumoProfissional = "", OcultarJanela = false, Browser = Utils.Enum.BrowserEnum.Chrome, DriverPath = @"D:\Projetos\AutomacaoRobo\Selenium.Utils\Drivers\", TimeOutAplicacao = TimeSpan.FromSeconds(30), Url = "https://seguro.catho.com.br/signin/", Sistema = Utils.Enum.SistemaEnum.Catho }; CoreAutomacao core = new CoreAutomacao(); var response = core.Processar(model); Console.ReadKey(); }
private string ValidarDados(SeleniumModel selenium) { StringBuilder mensagem = new StringBuilder(""); if (String.IsNullOrEmpty(selenium.Login) || String.IsNullOrEmpty(selenium.Senha)) { mensagem.Append("Credenciais inválidas"); } if (selenium.Cargos.Count == 0) { mensagem.Append("Preencha com os cargos desejados"); } if (String.IsNullOrEmpty(selenium.DriverPath)) { mensagem.Append("URL do driver não preenchida"); } if (String.IsNullOrEmpty(selenium.NomeUsuario)) { mensagem.Append("Preencha o primeiro nome do usuário"); } if (String.IsNullOrEmpty(selenium.ResumoProfissional)) { mensagem.Append("Preencha o resumo profissional"); } if (selenium.TimeOutAplicacao.TotalSeconds <= 0) { mensagem.Append("Configure o TimeOut da aplicação"); } if (String.IsNullOrEmpty(selenium.Url)) { mensagem.Append("URL inválida"); } return(mensagem.ToString()); }
/// <summary> /// 读取Excel /// </summary> /// <param name="path"></param> /// <returns></returns> public static SeleniumModel ReadSeleniumFile(string path) { SeleniumModel model = new SeleniumModel(); // 文件读取 using (ExcelUtility excel = new ExcelUtility(path)) { // 获取Menu表 ExcelWorksheet menu = excel.GetSheet("Menu"); // 启动URL model.StartUrl = menu.Cells["C1"].Text; if (string.IsNullOrWhiteSpace(model.StartUrl)) { App.ErrorList.Add("error"); } // 测试案列获取 model.MenuList = new List <SeleniumMenuItem>(); List <ExcelWorksheet> sheets = new List <ExcelWorksheet>(); for (int i = 4; i <= menu.GetMaxRow(1); i++) { // No空跳过 if (string.IsNullOrWhiteSpace(menu.Cells[i, 1].Text)) { continue; } // 获取一条数据 SeleniumMenuItem item = new SeleniumMenuItem() { Case = menu.Cells[i, 2].Text, View = menu.Cells[i, 3].Text, ViewName = menu.Cells[i, 4].Text, Event = menu.Cells[i, 5].Text, }; // Case,View,Event为空就跳过 if (string.IsNullOrWhiteSpace(item.Case) || string.IsNullOrWhiteSpace(item.View) || string.IsNullOrWhiteSpace(item.Event)) { continue; } // 判断View对应的Sheet是否存在 ExcelWorksheet sh = excel.GetSheet(item.View); if (sh == null) { App.ErrorList.Add(EnumMessage.E01.GetMessage(item.View)); if (!sheets.Select(x => x.Name).ToList().Contains(sh.Name)) { sheets.Add(sh); } } else { // 添加 model.MenuList.Add(item); } } // 画面数据获取 model.ViewList = new Dictionary <string, SeleniumViewItem>(); foreach (ExcelWorksheet sh in sheets) { SeleniumViewItem viewItem = new SeleniumViewItem(); // 控件数据获取 viewItem.ControlList = new List <SeleniumControlItem>(); for (int i = 3; i < sh.GetMaxRow(1); i++) { SeleniumControlItem item = new SeleniumControlItem() { No = sh.Cells[i, 1].Text, Id = sh.Cells[i, 2].Text, Name = sh.Cells[i, 3].Text, }; // No Id为空跳过 if (!string.IsNullOrWhiteSpace(item.No) && !string.IsNullOrWhiteSpace(item.Id)) { viewItem.ControlList.Add(item); } } // 获取事件数据 viewItem.EventList = new Dictionary <string, List <SeleniumEventItem> >(); for (int j = 6; j <= sh.GetMaxColumn(1); j += 2) { // 事件头ID为空跳过 if (string.IsNullOrWhiteSpace(sh.Cells[j, 1].Text)) { continue; } // 事件数据获取 List <SeleniumEventItem> events = new List <SeleniumEventItem>(); for (int i = 3; i < sh.GetMaxRow(j); i++) { SeleniumEventItem item = new SeleniumEventItem() { No = sh.Cells[i, j].Text, Event = sh.Cells[i, j + 1].Text, }; // Id Event 为空跳过 if (!string.IsNullOrWhiteSpace(item.No) && !string.IsNullOrWhiteSpace(item.Event)) { events.Add(item); } } viewItem.EventList.Add(sh.Cells[j, 1].Text, events); } // 添加画面数据 model.ViewList.Add(sh.Name, viewItem); } } return(model); }
/// <summary> /// /// </summary> /// <param name="model"></param> public void Test(UI202ViewModel model) { SeleniumModel excelModel = SeleniumUtiltity.ReadSeleniumFile(@"E:\GitHub\YsProject\YsProject\Excels\Selenium.xlsx"); using (ChromeUtility driver = new ChromeUtility("https://*****:*****@"D:\Work\GitHub\a.png", ScreenshotImageFormat.Png, true); //string url = driver.Url; //string title = driver.Title; //string handle = driver.CurrentWindowHandle; -- ??? //driver.Navigate().Back(); //driver.Navigate().Forward(); //driver.Navigate().Refresh(); //System.Drawing.Size s = driver.Manage().Window.Size; //driver.Manage().Window.Size = new System.Drawing.Size(1024, 768); //System.Drawing.Point point = driver.Manage().Window.Position; //driver.Manage().Window.Position = new System.Drawing.Point(0, 0); //driver.Manage().Window.Maximize(); //driver.Manage().Window.Minimize(); //ChromeOptions options = new ChromeOptions(); //options.AddExcludedArgument("enable-automation"); //options.AddArguments("--test-type", "--ignore-certificate-errors"); //options.AddAdditionalCapability("useAutomationExtension", false); //IWebDriver driver = new ChromeDriver(options); //driver.Manage().Window.Maximize(); //List<string> pages = new List<string>(); //try //{ // WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(30)) // { // PollingInterval = TimeSpan.FromSeconds(3), // }; // wait.IgnoreExceptionTypes(typeof(NoSuchElementException)); // string url = "https://172.21.4.200/log_in"; // driver.Navigate().GoToUrl(url); // IWebElement e1 = wait.Until(e => e.FindElement(By.Id("name"))); // e1.SendKeys("tomohiro.matsumura"); // pages.Add(driver.CurrentWindowHandle); // IWebElement e2 = driver.FindElement(By.ClassName("functionButton")); // e2.Click(); // IWebElement e3 = wait.Until(e => e.FindElement(By.ClassName("mainmenu"))); // e3.Click(); // IWebElement e4 = wait.Until(e => e.FindElement(By.ClassName("linkButton"))); // e4.Click(); // IWebElement e5 = wait.Until(e => e.FindElement(By.Name("limit_level"))); // SelectElement select = new SelectElement(e5); // while (select == null || select.AllSelectedOptions.Count == 0) // { // Thread.Sleep(100); // e5 = driver.FindElement(By.Name("limit_level")); // select = new SelectElement(e5); // } // select.SelectByText("担当外秘"); // //select.SelectByIndex(2); // IWebElement e6 = driver.FindElement(By.CssSelector("input.border.border-glay.form-control-sm.form-control.datePickerCustom")); // e6.SendKeys("2019/01/03"); }
public CathoScreen(SeleniumModel selenium) : base(selenium.Browser, selenium.DriverPath, selenium.OcultarJanela) { _dados = selenium; }