Пример #1
0
        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));
            }
        }
Пример #3
0
        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());
        }
Пример #5
0
        /// <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);
        }
Пример #6
0
        /// <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;
 }