示例#1
0
        public void CanGetPageElementCollection()
        {
            //Setup
            var destFolderName = "PageObject";
            var destFolder     = Path.Combine(
                FileAndFolder.GetExecutionDirectory(),
                SolutionFolders.Resources.ToString(),
                SolutionFolders.Resources.ToString(),
                destFolderName
                );

            if (!Directory.Exists(destFolder))
            {
                Directory.CreateDirectory(destFolder);
            }


            var exePath  = FileAndFolder.GetProjectPath();
            var filePath = Path.Combine(exePath, "DevTests", SolutionFolders.Resources.ToString());

            FileAndFolder.CopyFile(FileName, filePath, FileName, destFolder);
            // instanciate
            var pageElement           = new PageElement();
            var folderStructure       = new string[] { SolutionFolders.Resources.ToString(), SolutionFolders.Resources.ToString(), destFolderName };
            var pageElementCollection = pageElement.GetPageElementsFromExccelFile(FileName, folderStructure);

            // Assert
            Assert.IsTrue(pageElementCollection.Count == 3);
            // Tear Down
            File.Delete(Path.Combine(destFolder, FileName));
            Directory.Delete(destFolder);
        }
示例#2
0
 public SvgClipPathPageElement(PageElement child, SvgClipPathElement clipPath, SvgMatrix clipPathParentTransform, PdfSpotColor spotColorOverride)
 {
     _spotColorOverride       = spotColorOverride;
     _child                   = child ?? throw new ArgumentNullException(nameof(child));
     _clipPath                = clipPath ?? throw new ArgumentNullException(nameof(clipPath));
     _clipPathParentTransform = clipPathParentTransform ?? throw new ArgumentNullException(nameof(clipPathParentTransform));
 }
示例#3
0
        public static void Input2 <TModel, TProperty>(
            this PageElement <TModel> page,
            Expression <Func <TModel, TProperty> > property,
            string value)
        {
            var inputId = page.Nav.Naming.Input(property);

            var input = page.Nav.FindOne(By.Id(inputId)).Element();

            if (input.GetAttribute("type").Equals("text") || input.GetAttribute("type").Equals("password"))
            {
                // Logger.LogDebug($@"Input {by}: ""{value}""");

                input.Clear();
                input.SendKeys(value);
            }
            if (input.TagName.Equals("textarea"))
            {
                // Logger.LogDebug($@"TextArea {by}: ""{value}""");

                input.Clear();
                input.SendKeys(value);
            }
            else if (input.GetAttribute("type").Equals("select-one"))
            {
                // Logger.LogDebug($@"Select {by}: ""{input}""");

                var selectElement = new SelectElement(input);
                selectElement.SelectByText(value);
            }
        }
示例#4
0
 public Address Insert(T element)
 {
     for (int i = 0; i < Pages.Length; i++)
     {
         if (Pages[i] == null)
         {
             Pages[i] = new PageElement
             {
                 Element = element,
                 index   = 0,
                 Next    = null
             };
             return(new Address
             {
                 Page = i,
                 Line = 0
             });
         }
         else if (!IsFull(Pages[i]))
         {
             Pages[i] = new PageElement
             {
                 Element = element,
                 index   = Pages[i].index + 1,
                 Next    = Pages[i]
             };
             return(new Address
             {
                 Page = i,
                 Line = Pages[i].index
             });
         }
     }
     throw new Exception("PageTable is full");
 }
示例#5
0
        public void Contains_With_By_True()
        {
            SetUp();
            var parentElement = new PageElement(By.Id("div1"));

            Assert.IsTrue(parentElement.Contains(By.Id("p2")));
        }
示例#6
0
        public string GetPageElementImageUrl(long Id, PageElement element, string login)
        {
            Paths paths = GetLoginImagePaths(login);

            if (paths == null)
            {
                return(null);
            }

            paths.Absolute = Path.Combine(paths.Absolute, element.ToString());

            if (!Directory.Exists(paths.Absolute))
            {
                return(null);
            }

            List <string> files = Directory.GetFiles(paths.Absolute, Id.ToString() + ".*", SearchOption.TopDirectoryOnly).ToList();

            files.AddRange(Directory.GetFiles(paths.Absolute, Id.ToString() + "_.*", SearchOption.TopDirectoryOnly));

            if (!files.Any())
            {
                return(null);
            }

            paths.Relative = Path.Combine(paths.Relative, element.ToString());

            string result = Path.Combine(paths.Relative, Path.GetFileName(files[0]));

            result = result.Replace('\\', '/');
            return(result);
        }
示例#7
0
        public static void CurrentElementContainsTextСaseSensitive(string textAlias)
        {
            PageElement element = ScenarioContext.Current.Element();
            string      text    = Alias.ResolveAsString(textAlias);

            StringAssert.Contains(element.TextAsLine, text, string.Format("Текущий элемент не содержит текст '{0}'. Текст элемента: '{1}'", text, element.TextAsLine));
        }
示例#8
0
        public PageElement this[ModalCols column]
        {
            get
            {
                if (_columnMap == null)
                {
                    InitColumnMap();
                }

                int         columnIndex = 0;
                PageElement pageElement = null;
                try
                {
                    columnIndex = _columnMap[column];
                }
                catch (KeyNotFoundException)
                {
                    throw new InvalidOperationException("Index was not found for: " + column);
                }

                try
                {
                    pageElement = this[columnIndex];
                }
                catch (KeyNotFoundException)
                {
                    throw new InvalidOperationException("Page Element was not found for: " + column);
                }

                return(pageElement);
            }
        }
示例#9
0
        public void Contains_With_By_False()
        {
            SetUp();
            var parentElement = new PageElement(By.TagName("h1"));

            Assert.IsFalse(parentElement.Contains(By.Id("p2")));
        }
示例#10
0
 protected static bool IsElementVisible(PageElement pageElement, TimeSpan?maxWaitTime = null)
 {
     pageElement.GoToFrame();
     return(SeleniumUtility
            .WebDriverWait(ExpectedConditions.ElementIsVisible(pageElement.Locator), maxWaitTime ?? Default5Seconds)
            .Displayed);
 }
示例#11
0
        public void GetRowByRowData()
        {
            Assert.IsTrue(File.Exists(Path.Combine(_filePath, FileName)));
            // copy file
            _destFolder = Path.Combine(
                FileAndFolder.GetExecutionDirectory(),
                SolutionFolders.Resources.ToString(),
                SolutionFolders.Resources.ToString(),
                "HomePageLocator"
                );
            if (!Directory.Exists(_destFolder))
            {
                Directory.CreateDirectory(_destFolder);
            }
            FileAndFolder.CopyFile(FileName, _filePath, FileName, _destFolder);

            _destFile = Path.Combine(_destFolder, FileName);
            Assert.IsTrue(File.Exists(_destFile));
            var allObjects = _excel.GetExcelFileObjects(_destFile);

            var rows = allObjects.GetLength(0);

            //var columns = allObjects.GetLength(1);
            for (var r = 1; r < rows; r++)
            {
                var pageObject = new PageElement
                {
                    Name  = allObjects.GetValue(r, 0).ToString(),
                    By    = allObjects.GetValue(r, 1).ToString(),
                    Query = allObjects.GetValue(r, 2).ToString(),
                };
                Console.WriteLine(pageObject);
                Assert.NotNull(pageObject);
            }
        }
示例#12
0
        public async Task <IActionResult> Create(
            [Bind("Name, Type, PageID")] PageElement pageElement)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    var parentPage = await _context.Pages
                                     .Include(p => p.PageElements)
                                     .SingleOrDefaultAsync(p => p.ID == pageElement.PageID);

                    var sortOrderNum = parentPage.PageElements.Count;
                    pageElement.SortOrder = sortOrderNum;

                    _context.Add(pageElement);
                    await _context.SaveChangesAsync();

                    return(RedirectToAction("Edit", "Page", new { id = pageElement.PageID }));
                }
            }
            catch (DbUpdateException /* ex */)
            {
                //Log the error (uncomment ex variable name and write a log.
                ModelState.AddModelError("", "Unable to save changes. " +
                                         "Try again, and if the problem persists " +
                                         "see your system administrator.");
            }
            return(View(pageElement));
        }
示例#13
0
 protected static void Click(PageElement pageElement, TimeSpan?maxWaitTime = null)
 {
     pageElement.GoToFrame();
     SeleniumUtility
     .WebDriverWait(
         ExpectedConditions.ElementToBeClickable(SeleniumDriver.Driver.FindElement(pageElement.Locator)),
         maxWaitTime).Click();
 }
示例#14
0
文件: Page.cs 项目: hbunjes/smartapi
        private List<ILinkElement> GetReferencingLinks()
        {
            const string LIST_REFERENCES = @"<REFERENCE action=""list"" guid=""{0}"" />";
            XmlDocument xmlDoc = Project.ExecuteRQL(LIST_REFERENCES.RQLFormat(this), RqlType.SessionKeyInProject);

            return (from XmlElement curLink in xmlDoc.GetElementsByTagName("LINK")
                    select (ILinkElement) PageElement.CreateElement(Project, curLink.GetGuid(), LanguageVariant)).ToList();
        }
示例#15
0
        public void IsPresent_Simple_False()
        {
            SetUp();

            var element = new PageElement(By.TagName("nasdfav"));

            Assert.IsFalse(element.IsPresent());
        }
示例#16
0
        public static void MoveCursorToElement(string alias)
        {
            PageElement element = PageElementCore.GetElementByAlias(alias);

            ScenarioContext.Current.SetElement(element);

            element.MoveMouseTo(0, 0);
        }
示例#17
0
        public static void ClearElement(string alias)
        {
            PageElement element = PageElement.GetElementByAlias(alias);

            ScenarioContext.Current.SetElement(element);

            element.Clear();
        }
示例#18
0
        public void PageElement_Ctor_With_ContextBy()
        {
            SetUp();
            IWebElement expectedElement = Driver.FindElement(By.Id("p2"));
            PageElement resultElement   = new PageElement(By.Id("div1"), By.TagName("p"));

            Assert.AreEqual(expectedElement, resultElement.BaseElement);
        }
示例#19
0
        public static void EnterTextToCurrentElement(string textAlias)
        {
            PageElement currentElement = ScenarioContext.Current.Element();
            string      text           = Alias.ResolveAsString(textAlias);

            currentElement.Clear();
            currentElement.TypeText(text);
        }
示例#20
0
        public void PageElement_Ctor_No_Context()
        {
            SetUp();
            IWebElement expectedElement = Driver.FindElement(By.TagName("nav"));
            PageElement resultElement   = new PageElement(By.TagName("nav"));

            Assert.AreEqual(expectedElement, resultElement.BaseElement);
        }
示例#21
0
        public bool SavePage(PageElementDetailList pageElementDetailList, string username)
        {
            var userId = 0;
            var users  = _db.Users.Where(m => m.UserName.Equals(username)).ToList();


            for (var i = 0; i < users.Count(); i++)
            {
                if (users[i] != null)
                {
                    userId = users[i].UserId;

                    var id         = userId;
                    var pageSetups = _db.PageSetups.Where(ps => ps.UserID == id);
                    foreach (var pageSetup in pageSetups)
                    {
                        //_db.PageSetups.Remove(pageSetup);
                    }
                }
            }

            if (userId > 0)
            {
                var newPageSetup =
                    new PageSetup {
                    UserID = userId, PageURL = pageElementDetailList.PageUrl, Name = pageElementDetailList.Name
                };

                _db.PageSetups.Add(newPageSetup);
                _db.SaveChanges();

                foreach (var ped in pageElementDetailList.PageElementDetails)
                {
                    if (ped.ReportId > 0)
                    {
                        var report = _db.ReportTemplates.Single(m => m.ReportID == ped.ReportId);

                        var pageElement = new PageElement
                        {
                            PageSetupID = newPageSetup.PageSetupID,
                            FrameID     = ped.FrameId,
                            ElementLeft = ped.Left,
                            ElementTop  = ped.Top,
                            ReportID    = ped.ReportId,
                            Width       = ped.Width,
                            Height      = ped.Height,
                            Title       = report.Name
                        };
                        _db.PageElements.Add(pageElement);
                    }
                }
                _db.SaveChanges();
            }

            _db.SaveChanges();
            return(true);
        }
示例#22
0
 protected static void ClickMultipleElements(PageElement pageElement)
 {
     pageElement.GoToFrame();
     foreach (var element in SeleniumDriver.Driver.FindElements(pageElement.Locator))
     {
         SeleniumUtility.WebDriverWait(ExpectedConditions.ElementToBeClickable(element), Default5Seconds)
         .Click();
     }
 }
示例#23
0
        protected static void RightClick(PageElement pageElement, TimeSpan?maxWaitTime = null)
        {
            pageElement.GoToFrame();
            var actions =
                new OpenQA.Selenium.Interactions.Actions(SeleniumDriver.Driver);

            actions.ContextClick(SeleniumUtility.WebDriverWait(ExpectedConditions.ElementIsVisible(pageElement.Locator),
                                                               maxWaitTime ?? Default5Seconds)).Build().Perform();
        }
示例#24
0
        public static void ElementContainsTextСaseSensitive(string alias, string textAlias)
        {
            PageElement element = PageElement.GetElementByAlias(alias);

            ScenarioContext.Current.SetElement(element);
            string text = Alias.ResolveAsString(textAlias);

            StringAssert.Contains(element.TextAsLine, text, string.Format("Элемент '{0}' не содержит текст '{1}'. Текст элемента: '{2}'", alias, text, element.TextAsLine));
        }
示例#25
0
        public static void CurrentElementTextMatchRegex(string patternAlias)
        {
            PageElement element = ScenarioContext.Current.Element();
            string      pattern = Alias.ResolveAsString(patternAlias);

            Regex regex = new Regex(pattern);

            Assert.IsTrue(regex.IsMatch(element.TextAsLine), string.Format("Текст в текущем элементе не совпадает с шаблоном '{0}'. Текст элемента: '{1}'", pattern, element.TextAsLine));
        }
示例#26
0
        public static void EnterTextToInput(string textAlias, string alias)
        {
            PageElement element = PageElement.GetElementByAlias(alias);

            ScenarioContext.Current.SetElement(element);
            string text = Alias.ResolveAsString(textAlias);

            element.Clear();
            element.TypeText(text);
        }
示例#27
0
        public static void FormFor <TModel>(this PageElement page, string id, Action <PageElement <TModel> > action)
        {
            var formId = page.Nav.Naming.Id(typeof(TModel));

            var by = id.NotEmpty() ? By.Id(id) : By.CssSelector($"[data-for='{formId}']");

            page.Nav.Logger.LogDebug($"Form {by}");

            page.Within(by, action);
        }
示例#28
0
        public static void ElementsExistInPage(Table elements)
        {
            foreach (TableRow elementRow in elements.Rows)
            {
                string      elementAlias = elementRow[0];
                PageElement element      = PageElement.GetElementByAlias(elementAlias);

                Assert.IsTrue(element.IsDisplayed, string.Format("Элемент (xPath: {0}) не найден на странице.", element.XPath));
            }
        }
示例#29
0
 protected static void DoubleClick(PageElement pageElement, TimeSpan?maxWaitTime = null)
 {
     if (IsElementVisible(pageElement, maxWaitTime ?? Default5Seconds))
     {
         pageElement.GoToFrame();
         new OpenQA.Selenium.Interactions.Actions(SeleniumDriver.Driver)
         .DoubleClick(SeleniumDriver.Driver.FindElement(pageElement.Locator)).Build()
         .Perform();
     }
 }
示例#30
0
        public static void ElementTextMatchRegex(string alias, string patternAlias)
        {
            PageElement element = PageElement.GetElementByAlias(alias);

            ScenarioContext.Current.SetElement(element);
            string pattern = Alias.ResolveAsString(patternAlias);

            Regex regex = new Regex(pattern);

            Assert.IsTrue(regex.IsMatch(element.TextAsLine), string.Format("Текст в элементе '{0}' не совпадает с шаблоном '{1}'. Текст элемента: '{2}'", alias, pattern, element.TextAsLine));
        }
示例#31
0
 protected void Page_Load(object sender, EventArgs e)
 {
     try { strIdentify = Session["isLogin"].ToString(); }
     catch (Exception ex)
     {
         if(strIdentify!="identified ")
             Response.Redirect("/subject/edit/LoginFail.html");
     };
     String path=System.Web.HttpUtility.UrlDecode(Request["file"]);
     if (path != null)
     {
         fullPath = Server.MapPath("/subject" + "/" + path + "/");
         try
         {
             PageElement page = new PageElement(path, fullPath);
             if (!page.isSucess) {
                Response.Write("<script>alert('意外错误!详细:" + page.exception + "')</script>");
             }
             fileName = page.fileName;
             title = page.title;
             keywords = page.keywords;
             description = page.description;
             defaultCss = page.defaultCss;
             mainImgRepeater = page.mainImgRepeater;
             footScript = page.footScript;
             cssLinks = page.cssLinksString;
         }
         catch (Exception ex)
         {
             Response.Write("<script>alert('意外错误!详细:" + ex + "')</script>");
         }
     }
     else {
         Response.Write("<script>alert('参数错误')</script>");
     }
 }
示例#32
0
 protected void Page_Load(object sender, EventArgs e)
 {
     try { strIdentify = Session["isLogin"].ToString(); }
     catch (Exception ex) {
         if(strIdentify!="identified ")
             Response.Redirect("/subject/edit/LoginFail.html");
     };
     path = System.Web.HttpUtility.UrlDecode(Request["file"]);
     if (path != null)
     {
         path = System.Web.HttpUtility.UrlDecode(Request["file"]);
         fullPath = Server.MapPath("/subject/" + path + "/");
         PageElement page = new PageElement(path, fullPath);
         if (!page.isSucess)
         {
             Response.Write("<script>alert('意外错误!详细:" + page.exception + "')</script>");
         }
         FileName.Disabled = true;
         Match m=Regex.Match(page.fileName,@"(\d{6})_(\S+)");
         if (m.Success)
         {
             dayName = m.Groups[1].Value;
             FileName.Value = m.Groups[2].Value;
         }
         else {
             dayName = "000000";
            FileName.Value = "读取发生错误!";
         }
         Button1.Text = "完成修改";
     }
     else
     {
         dayName = DateTime.Now.ToString("yyMMdd");
         Button1.Text = "生成文件";
     }
 }
示例#33
0
 public TableElement(string tableId)
 {
     table = new PageElement(tableId);
 }