private List <AppiumWebElement> GetCategoryElement(string name) { AndroidElement categoryMainPageElement = AppAccess.GetElementByClassNameAndText("android.widget.TextView", new string[] { "首页" }, true, true, true); categoryMainPageElement.Click(); AndroidElement categoryMenuElement = AppAccess.GetElementByClassNameAndText("android.widget.TextView", new string[] { "生鲜分类" }, true, true, true); categoryMenuElement.Click(); AndroidElement listElement = AppAccess.GetElementByXPath("//android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.LinearLayout/android.widget.FrameLayout", false); //ReadOnlyCollection<AndroidElement> allC3Elements = AppAccess.GetElementsByXPath("//android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.ListView/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.GridView/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.TextView", false); ReadOnlyCollection <AppiumWebElement> allC3Elements = listElement.FindElementsByClassName("android.widget.TextView"); List <AppiumWebElement> foundElements = new List <AppiumWebElement>(); for (int i = 0; i < allC3Elements.Count; i++) { AppiumWebElement element = allC3Elements[i]; if (element.Text == name) { foundElements.Add(element); /* * if (i + 3 >= allC3Elements.Count) * { * return GetCategoryElementAfterFound(name); * } * else * { * return element; * }*/ } } if (foundElements.Count > 0) { return(foundElements); } try { try { Size winSize = AppAccess.GetWindowSize(); AppAccess.Swipe(new Point(300, 600), new Point(300, 300), 1000); } catch (Exception ex1) { } Thread.Sleep(1000); return(this.GetCategoryElement(name)); } catch (Exception ex) { throw new Exception("找不到分类元素, name = " + name, ex); } }
private void SelectCategory(NcpAppElement categoryElement) { string category1Name = categoryElement.Attributes["category1Name"]; AndroidElement c1Node = AppAccess.GetElementByXPath("//android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.LinearLayout[1]/android.widget.ListView/android.widget.RelativeLayout/android.widget.RelativeLayout/android.widget.TextView[1]", new string[] { category1Name }, true); c1Node.Click(); Thread.Sleep(1500); List <AppiumWebElement> cElements = this.GetCategoryElement(categoryElement.Name); AppiumWebElement cElement = cElements[cElements.Count - 1]; Point point = cElement.Location; Size size = cElement.Size; //点击文字上方的图标 AppAccess.Tap(1, point.X + size.Width / 2, point.Y - 80, 100); //cagtegoryElement.Click(); }
private List <AppiumWebElement> GetCategoryElementAfterFound(string name) { //出现过找到元素了,但是点击不到的情况,那么再滑屏一下,使得元素暴露的更明显 try { AppAccess.Swipe(new Point(300, 600), new Point(300, 10), 2000); } catch (Exception ex) { //出错,但是界面看起来没问题,所以忽略了 } AndroidElement categoryMainPageElement = AppAccess.GetElementByClassNameAndText("android.widget.TextView", new string[] { "首页" }, true, true, true); categoryMainPageElement.Click(); AndroidElement categoryMenuElement = AppAccess.GetElementByClassNameAndText("android.widget.TextView", new string[] { "生鲜分类" }, true, true, true); categoryMenuElement.Click(); AndroidElement listElement = AppAccess.GetElementByXPath("//android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.LinearLayout/android.widget.FrameLayout", false); //ReadOnlyCollection<AndroidElement> allC3Elements = AppAccess.GetElementsByXPath("//android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.ListView/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.GridView/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.TextView", false); ReadOnlyCollection <AppiumWebElement> allC3Elements = listElement.FindElementsByClassName("android.widget.TextView"); List <AppiumWebElement> foundElements = new List <AppiumWebElement>(); foreach (AppiumWebElement element in allC3Elements) { if (element.Text == name) { foundElements.Add(element); } } if (foundElements.Count == 0) { throw new Exception("GetCategoryElementAfterFound执行出错!"); } else { return(foundElements); } }
private void GetCategoryInfo() { string categoryFilePath = this.GetCategoryFilePath(); if (!File.Exists(categoryFilePath)) { try { //获取一级分类信息 NcpAppElementList allC1Elements = this.GetCategory1Items(); foreach (NcpAppElement c1Element in allC1Elements) { //AndroidElement c1Node = AppAccess.GetElementByXPath("//android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.LinearLayout[1]/android.widget.ListView/android.widget.RelativeLayout/android.widget.TextView[1]", new string[] { c1Element.Name }, true); AndroidElement c1Node = AppAccess.GetElementByXPath("//android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.LinearLayout[1]/android.widget.ListView/android.widget.RelativeLayout/android.widget.RelativeLayout/android.widget.TextView[1]", new string[] { c1Element.Name }, true); c1Node.Click(); CategoryElementList = new NcpAppElementList(); Size winSize = AppAccess.GetWindowSize(); AppAccess.SwipeDisplayElements(new Point(300, 1000), new Point(300, 300), 2000, 2000, GetSubCategoryItems); //分级处理 List <NcpAppElement> level2Elements = new List <NcpAppElement>(); NcpAppElement lastLevel2Element = null; for (int i = 0; i < CategoryElementList.Count; i++) { NcpAppElement element = CategoryElementList[i]; if (element.TypeName == "Level2") { level2Elements.Add(element); lastLevel2Element = element; } else { lastLevel2Element.Children.Add(element); } } c1Element.Children.AddRange(level2Elements); } //保存到文件 string[] categoryColumns = new string[] { "category1Name", "category2Name", "category3Name" }; Dictionary <string, int> categoryColumnDic = CommonUtil.InitStringIndexDic(categoryColumns); ExcelWriter categoryEW = new ExcelWriter(categoryFilePath, "List", categoryColumnDic, null); for (int i = 0; i < allC1Elements.Count; i++) { NcpAppElement c1Element = allC1Elements[i]; string category1Name = c1Element.Name; if (c1Element.Children.Count > 0) { for (int j = 0; j < c1Element.Children.Count; j++) { NcpAppElement c2Element = c1Element.Children[j]; string category2Name = c2Element.Name; if (c2Element.Children.Count > 0) { for (int k = 0; k < c2Element.Children.Count; k++) { NcpAppElement c3Element = c2Element.Children[k]; string category3Name = c3Element.Name; Dictionary <string, string> row = new Dictionary <string, string>(); row.Add("category1Name", category1Name); row.Add("category2Name", category2Name); row.Add("category3Name", category3Name); categoryEW.AddRow(row); } } } } } categoryEW.SaveToDisk(); } catch (Exception ex) { throw new Exception("获取分类信息失败.", ex); } } }