Esempio n. 1
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);
        }
Esempio n. 2
0
        public void DoEvent(SeleniumEventItem item, List <SeleniumControlItem> ControlList)
        {
            IWebElement e = null;

            if (!string.IsNullOrWhiteSpace(item.No))
            {
                string id = ControlList.Where(x => x.No == item.No).Select(x => x.Id).FirstOrDefault();
                if (string.IsNullOrWhiteSpace(id))
                {
                    App.ErrorList.Add("err er 1");
                }
                else
                {
                    e = Wait.GetSeleItemControl(id);
                    if (e == null)
                    {
                        App.ErrorList.Add($"{id}not find err er 2");
                    }
                }
            }

            SeleItem eve = SeleniumUtiltity.GetSeleItem(item.Event);

            switch (eve.Id)
            {
            case EnumSelenium.ALL:
                e.SendKeys(eve.Value);
                break;

            case EnumSelenium.BACK:
                break;

            case EnumSelenium.CLEAR:
                e.Clear();
                break;

            case EnumSelenium.CLICK:
                e.Click();
                break;

            case EnumSelenium.COMBO:
                break;

            case EnumSelenium.FORWARD:
                break;

            case EnumSelenium.FULLSCREEN:
                break;

            case EnumSelenium.KEY:
                break;

            case EnumSelenium.LOSTFOCUSE:
                break;

            case EnumSelenium.MAXSIZE:
                break;

            case EnumSelenium.MINSIZE:
                break;

            case EnumSelenium.PIC:
                break;

            case EnumSelenium.REFRESH:
                break;

            case EnumSelenium.TABLE:
                break;

            default:
                break;
            }
        }