示例#1
0
        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);
            }
        }
示例#2
0
        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();
        }
示例#3
0
        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);
            }
        }
示例#4
0
        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);
                }
            }
        }