/// <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); }
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; } }