public void FindElementTwoByEmptyChild() { Mock <IAllDriver> driver = new Mock <IAllDriver>(); Mock <IAllElement> elem1 = new Mock <IAllElement>(); Mock <IAllElement> elem2 = new Mock <IAllElement>(); Mock <IAllElement> elem5 = new Mock <IAllElement>(); var elems = new List <IWebElement>().AsReadOnly(); var elems12 = new List <IWebElement>() { elem1.Object, elem2.Object }.AsReadOnly(); var elems5 = new List <IWebElement>() { elem5.Object }.AsReadOnly(); driver.Setup(_ => _.FindElements(by.Mechanism, by.Criteria)).Returns(elems12); elem1.Setup(_ => _.FindElements(by2)).Returns(elems); elem2.Setup(_ => _.FindElements(by2)).Returns(elems5); ByChained byChained = new ByChained(by, by2); Assert.That(byChained.FindElement(driver.Object), Is.EqualTo(elem5.Object)); driver.Verify(_ => _.FindElements(by.Mechanism, by.Criteria), Times.Once); elem1.Verify(_ => _.FindElements(by2), Times.Once); elem2.Verify(_ => _.FindElements(by2), Times.Once); }
public void TestEquals() { var actual = new ByChained(By.Id("cheese"), by2); var expected = new ByChained(By.Id("cheese"), by2); Assert.That(actual, Is.EqualTo(expected)); }
public void FindElementTwoByEmptyChild() { Mock <IAllDriver> driver = new Mock <IAllDriver>(); Mock <IAllElement> elem1 = new Mock <IAllElement>(); Mock <IAllElement> elem2 = new Mock <IAllElement>(); Mock <IAllElement> elem5 = new Mock <IAllElement>(); var elems = new List <IWebElement>().AsReadOnly(); var elems12 = new List <IWebElement>() { elem1.Object, elem2.Object }.AsReadOnly(); var elems5 = new List <IWebElement>() { elem5.Object }.AsReadOnly(); driver.Setup(_ => _.FindElementsByName(It.Is <string>(x => x == "cheese"))).Returns(elems12); elem1.Setup(_ => _.FindElements(It.Is <By>(x => x.Equals(By.Name("photo"))))).Returns(elems); elem2.Setup(_ => _.FindElements(It.Is <By>(x => x.Equals(By.Name("photo"))))).Returns(elems5); ByChained by = new ByChained(By.Name("cheese"), By.Name("photo")); Assert.That(by.FindElement(driver.Object), Is.EqualTo(elem5.Object)); driver.Verify(_ => _.FindElementsByName("cheese"), Times.Once); elem1.Verify(_ => _.FindElements(By.Name("photo")), Times.Once); elem2.Verify(_ => _.FindElements(By.Name("photo")), Times.Once); }
public void ShouldNotThrowIfElementBecomesStale() { Mock <IAllDriver> driver = new Mock <IAllDriver>(); Mock <IAllElement> elem1 = new Mock <IAllElement>(); Mock <IAllElement> elem2 = new Mock <IAllElement>(); Mock <IAllElement> elem3 = new Mock <IAllElement>(); Mock <IAllElement> elem4 = new Mock <IAllElement>(); var elems12 = new List <IWebElement>() { elem1.Object, elem2.Object }.AsReadOnly(); var elems34 = new List <IWebElement>() { elem3.Object, elem4.Object }.AsReadOnly(); driver.Setup(_ => _.FindElements(by.Mechanism, by.Criteria)).Returns(elems12); elem1.Setup(_ => _.FindElements(by2)).Throws(new StaleElementReferenceException()); elem2.Setup(_ => _.FindElements(by2)).Returns(elems34); ByChained byChained = new ByChained(by, by2); Assert.That(byChained.FindElements(driver.Object), Is.EquivalentTo(elems34)); driver.Verify(_ => _.FindElements(by.Mechanism, by.Criteria), Times.Once); elem1.Verify(_ => _.FindElements(by2), Times.Once); elem2.Verify(_ => _.FindElements(by2), Times.Once); }
public void FindElementsZeroBy() { Mock <IAllDriver> driver = new Mock <IAllDriver>(); ByChained byChained = new ByChained(); Assert.That(byChained.FindElements(driver.Object), Is.EqualTo(new List <IWebElement>().AsReadOnly())); }
public void FindElementZeroBy() { Mock <IAllDriver> driver = new Mock <IAllDriver>(); ByChained byChained = new ByChained(); Assert.Throws <NoSuchElementException>(() => byChained.FindElement(driver.Object)); }
public void FindElements_TwoBys_ShouldReturnZero() { driver.Url = nestedPage; driver.Navigate(); var by = new ByChained(By.Name("classes"), By.CssSelector(".NotFound")); Assert.AreEqual(0, by.FindElements(driver).Count); }
public void FindElements_ShouldReturnMultiple() { driver.Url = nestedPage; driver.Navigate(); var by = new ByChained(By.Name("div1")); Assert.AreEqual(4, by.FindElements(driver).Count); }
public void FindElement_TwoBys_ShouldReturnOne() { driver.Url = nestedPage; driver.Navigate(); var by = new ByChained(By.Name("classes"), By.CssSelector(".one")); Assert.AreEqual("Find me", by.FindElement(driver).Text); }
public void FindElementsNotFound_ShouldBeZero() { driver.Url = nestedPage; driver.Navigate(); var by = new ByChained(By.Name("NotFoundAtAll")); Assert.AreEqual(0, by.FindElements(driver).Count); }
public void FindElement_ShouldReturnOne() { driver.Url = nestedPage; driver.Navigate(); var by = new ByChained(By.Name("div1")); Assert.IsTrue(by.FindElement(driver).Displayed); }
public void FindElements_TwoBys_ShouldReturnMultiple() { driver.Url = nestedPage; driver.Navigate(); var by = new ByChained(By.Name("classes"), By.CssSelector(".one")); Assert.That(by.FindElements(driver).Count, Is.EqualTo(2)); }
/// <summary> /// Creates a list of <see cref="By"/> locators based on the attributes of this member. /// </summary> /// <param name="member">The <see cref="MemberInfo"/> containing information about /// the member of the Page Object class.</param> /// <returns>A list of <see cref="By"/> locators based on the attributes of this member.</returns> protected static ReadOnlyCollection <By> CreateLocatorList(MemberInfo member) { if (member == null) { throw new ArgumentNullException(nameof(member), "member cannot be null"); } var useSequenceAttributes = Attribute.GetCustomAttributes(member, typeof(FindsBySequenceAttribute), true); bool useSequence = useSequenceAttributes.Length > 0; var useFindAllAttributes = Attribute.GetCustomAttributes(member, typeof(FindsByAllAttribute), true); bool useAll = useFindAllAttributes.Length > 0; if (useSequence && useAll) { throw new ArgumentException("Cannot specify FindsBySequence and FindsByAll on the same member"); } List <By> bys = new List <By>(); var attributes = Attribute.GetCustomAttributes(member, typeof(AbstractFindsByAttribute), true); if (attributes.Length > 0) { Array.Sort(attributes); foreach (var attribute in attributes) { var castedAttribute = (AbstractFindsByAttribute)attribute; var findsByAttribute = attribute as FindsByAttribute; if (findsByAttribute != null && findsByAttribute.Using == null) { findsByAttribute.Using = member.Name; } bys.Add(castedAttribute.Finder); } if (useSequence) { ByChained chained = new ByChained(bys.ToArray()); bys.Clear(); bys.Add(chained); } if (useAll) { ByAll all = new ByAll(bys.ToArray()); bys.Clear(); bys.Add(all); } } return(bys.AsReadOnly()); }
public void FindElementsOneByEmpty() { Mock <IAllDriver> driver = new Mock <IAllDriver>(); var elems = new List <IWebElement>().AsReadOnly(); driver.Setup(_ => _.FindElements(by.Mechanism, by.Criteria)).Returns(elems); ByChained byChained = new ByChained(by); Assert.That(byChained.FindElements(driver.Object), Is.EqualTo(elems)); }
public void FindElementsOneByEmpty() { Mock <IAllDriver> driver = new Mock <IAllDriver>(); var elems = new List <IWebElement>().AsReadOnly(); driver.Setup(_ => _.FindElementsByName(It.Is <string>(x => x == "cheese"))).Returns(elems); ByChained by = new ByChained(By.Name("cheese")); Assert.That(by.FindElements(driver.Object), Is.EqualTo(elems)); }
public void FindElement_TwoBys_ShouldThrow() { driver.Url = nestedPage; driver.Navigate(); try { var by = new ByChained(By.Name("classes"), By.CssSelector(".NotFound")); by.FindElement(driver); Assert.Fail("Expected NotFoundException"); } catch (NotFoundException) { Assert.Pass(); } }
public void FindElementNotFound_ShouldThrow() { driver.Url = nestedPage; driver.Navigate(); var by = new ByChained(By.Name("NotFoundAtAll")); try { by.FindElement(driver); Assert.Fail("Expected NotFoundExcepotion"); } catch (NotFoundException) { Assert.Pass(); } }
public void FindElementsOneBy() { Mock <IAllDriver> driver = new Mock <IAllDriver>(); Mock <IAllElement> elem1 = new Mock <IAllElement>(); Mock <IAllElement> elem2 = new Mock <IAllElement>(); var elems12 = new List <IWebElement>() { elem1.Object, elem2.Object }.AsReadOnly(); driver.Setup(_ => _.FindElements(by.Mechanism, by.Criteria)).Returns(elems12); ByChained byChained = new ByChained(by); Assert.That(elems12, Is.EqualTo(byChained.FindElements(driver.Object))); driver.Verify(_ => _.FindElements(by.Mechanism, by.Criteria), Times.Once); }
public void FindElementsOneBy() { Mock <IAllDriver> driver = new Mock <IAllDriver>(); Mock <IAllElement> elem1 = new Mock <IAllElement>(); Mock <IAllElement> elem2 = new Mock <IAllElement>(); var elems12 = new List <IWebElement>() { elem1.Object, elem2.Object }.AsReadOnly(); driver.Setup(_ => _.FindElementsByName(It.Is <string>(x => x == "cheese"))).Returns(elems12); ByChained by = new ByChained(By.Name("cheese")); Assert.AreEqual(by.FindElements(driver.Object), elems12); driver.Verify(_ => _.FindElementsByName("cheese"), Times.Once); }
public void FindElementOneByEmpty() { Mock <IAllDriver> driver = new Mock <IAllDriver>(); var elems = new List <IWebElement>().AsReadOnly(); driver.Setup(_ => _.FindElements(by.Mechanism, by.Criteria)).Returns(elems); ByChained byChained = new ByChained(by); try { byChained.FindElement(driver.Object); Assert.Fail("Expected NoSuchElementException!"); } catch (NoSuchElementException) { driver.Verify(_ => _.FindElements(by.Mechanism, by.Criteria), Times.Once); Assert.Pass(); } }
public void FindElementOneByEmpty() { Mock <IAllDriver> driver = new Mock <IAllDriver>(); var elems = new List <IWebElement>().AsReadOnly(); driver.Setup(_ => _.FindElementsByName(It.Is <string>(x => x == "cheese"))).Returns(elems); ByChained by = new ByChained(By.Name("cheese")); try { by.FindElement(driver.Object); Assert.Fail("Expected NoSuchElementException!"); } catch (NoSuchElementException) { driver.Verify(_ => _.FindElementsByName("cheese"), Times.Once); Assert.Pass(); } }