/// <summary> /// Initializes a new instance of the <see cref="SeleniumBrowser"/> class. /// </summary> /// <param name="driver">The browser driver as a lazy object.</param> public SeleniumBrowser(Lazy<IWebDriver> driver) { this.driver = driver; this.pageBuilder = new SeleniumPageBuilder(); this.pageCache = new Dictionary<Type, Func<IWebDriver, IBrowser, Action<object>, object>>(); }
public void TestCreatePage() { var driver = new Mock<IWebDriver>(MockBehavior.Strict); var browser = new Mock<IBrowser>(MockBehavior.Strict); var listItem = new Mock<IWebElement>(MockBehavior.Loose); listItem.Setup(l => l.Displayed).Returns(true); var itemList = new ReadOnlyCollection<IWebElement>(new[] { listItem.Object }); // Setup list mock var listElement = new Mock<IWebElement>(MockBehavior.Strict); listElement.Setup(l => l.FindElements(By.TagName("LI"))).Returns(itemList); // Setup mock for list driver.Setup(d => d.FindElement(By.Id("ListDiv"))).Returns(listElement.Object); var pageFunc = new SeleniumPageBuilder().CreatePage(typeof(BuildPage)); var pageObject = pageFunc(driver.Object, browser.Object, null); var page = pageObject as BuildPage; Assert.IsNotNull(page); Assert.IsNotNull(page.TestButton); AssertLocatorValue(page.TestButton, By.Id("MyControl")); Assert.IsNotNull(page.CombinedControl); AssertLocatorValue(page.CombinedControl, new ByChained(By.Id("Field1"), By.LinkText("The Button"))); Assert.IsNotNull(page.UserName); AssertLocatorValue(page.UserName, By.Name("UserName")); // Nesting Test Assert.IsNotNull(page.MyDiv); AssertLocatorValue(page.MyDiv, By.ClassName("btn")); Assert.IsNotNull(page.MyDiv.InternalButton); AssertLocatorValue(page.MyDiv.InternalButton, By.Id("InternalItem")); //List Test Assert.IsNotNull(page.MyCollection); Assert.IsInstanceOfType(page.MyCollection, typeof(SeleniumListElementWrapper<IWebElement, ListItem>)); var propertyList = (SeleniumListElementWrapper<IWebElement, ListItem>)page.MyCollection; Assert.IsNotNull(propertyList.Parent); AssertLocatorValue(propertyList.Parent, By.Id("ListDiv")); // Test First Element var element = propertyList.FirstOrDefault(); Assert.IsNotNull(element); Assert.IsNotNull(element.MyTitle); AssertLocatorValue(element.MyTitle, By.Id("itemTitle")); listElement.VerifyAll(); listItem.VerifyAll(); driver.VerifyAll(); }
/// <summary> /// Initializes a new instance of the <see cref="SeleniumBrowser" /> class. /// </summary> /// <param name="driver">The browser driver as a lazy object.</param> /// <param name="logger">The logger.</param> public SeleniumBrowser(Lazy<IWebDriver> driver, ILogger logger) : base(logger) { // TODO: create timeouts structure, pass it through this constructor, so we know what the default timeouts are. this.driver = driver; this.pageBuilder = new SeleniumPageBuilder(); this.pageCache = new Dictionary<Type, Func<IWebDriver, IBrowser, Action<object>, object>>(); }
public void TestCreatePageWithDuplicateNativeAndLocatorAttributes() { var driver = new Mock <IWebDriver>(); var browser = new Mock <IBrowser>(MockBehavior.Strict); var pageFunc = new SeleniumPageBuilder().CreatePage(typeof(NativeAttributePage)); var pageObject = pageFunc(driver.Object, browser.Object, null); var page = pageObject as NativeAttributePage; Assert.IsNotNull(page); Assert.IsNotNull(page.DuplicateElement); AssertLocatorValue(page.DuplicateElement, By.Id("1234")); }
public void TestCreatePageWithCombinedNativeAndLocatorAttributes() { var driver = new Mock <IWebDriver>(); var browser = new Mock <IBrowser>(MockBehavior.Strict); var pageFunc = new SeleniumPageBuilder().CreatePage(typeof(NativeAttributePage)); var pageObject = pageFunc(driver.Object, browser.Object, null); var page = pageObject as NativeAttributePage; Assert.IsNotNull(page); Assert.IsNotNull(page.CombinedElement); AssertLocatorValue(page.CombinedElement, new ByChained(By.Id("combined"), By.TagName("DIV"))); }
public void TestCreatePageWithBrowserArgument() { var driver = new Mock <IWebDriver>(); var browser = new Mock <IBrowser>(MockBehavior.Strict); var pageFunc = new SeleniumPageBuilder().CreatePage(typeof(BrowserDocument)); var pageObject = pageFunc(driver.Object, browser.Object, null); var page = pageObject as BrowserDocument; Assert.IsNotNull(page); Assert.IsNotNull(page.Browser); driver.VerifyAll(); browser.VerifyAll(); }
public void TestMissingArgumentConstructor() { var builder = new SeleniumPageBuilder(); var pageFunc = builder.CreatePage(typeof(NoConstructorElement)); Assert.IsNotNull(pageFunc); var driver = new Mock <IWebDriver>(); var browser = new Mock <IBrowser>(MockBehavior.Strict); var page = pageFunc(driver.Object, browser.Object, null); Assert.IsNotNull(page); Assert.IsInstanceOfType(page, typeof(NoConstructorElement)); }
public void TestMultipleConstructorArguments() { var driver = new Mock <IWebDriver>(MockBehavior.Strict); var browser = new Mock <IBrowser>(MockBehavior.Strict); var listItem = new Mock <IWebElement>(MockBehavior.Loose); listItem.Setup(l => l.Displayed).Returns(true); var itemList = new ReadOnlyCollection <IWebElement>(new[] { listItem.Object }); // Setup list mock var listElement = new Mock <IWebElement>(MockBehavior.Strict); listElement.Setup(l => l.FindElements(By.TagName("LI"))).Returns(itemList); // Setup mock for list driver.Setup(d => d.FindElement(By.Id("ListDiv"))).Returns(listElement.Object); var pageFunc = new SeleniumPageBuilder().CreatePage(typeof(NestedElementPage)); var pageObject = pageFunc(driver.Object, browser.Object, null); var page = pageObject as NestedElementPage; Assert.IsNotNull(page); Assert.IsNotNull(page.FirstChild); AssertLocatorValue(page.FirstChild, By.Id("Test1")); Assert.IsNotNull(page.FirstChild.SecondChild); AssertLocatorValue(page.FirstChild.SecondChild, By.Id("Test2")); var element = page.FirstChild.SecondChild; Assert.IsNotNull(element.SearchContext); Assert.IsNotNull(element.Driver); Assert.AreSame(driver.Object, element.Driver); Assert.AreSame(page.FirstChild, element.SearchContext); }
public void TestMultipleConstructorArguments() { var driver = new Mock<IWebDriver>(MockBehavior.Strict); var browser = new Mock<IBrowser>(MockBehavior.Strict); var listItem = new Mock<IWebElement>(MockBehavior.Loose); listItem.Setup(l => l.Displayed).Returns(true); var itemList = new ReadOnlyCollection<IWebElement>(new[] { listItem.Object }); // Setup list mock var listElement = new Mock<IWebElement>(MockBehavior.Strict); listElement.Setup(l => l.FindElements(By.TagName("LI"))).Returns(itemList); // Setup mock for list driver.Setup(d => d.FindElement(By.Id("ListDiv"))).Returns(listElement.Object); var pageFunc = new SeleniumPageBuilder().CreatePage(typeof(NestedElementPage)); var pageObject = pageFunc(driver.Object, browser.Object, null); var page = pageObject as NestedElementPage; Assert.IsNotNull(page); Assert.IsNotNull(page.FirstChild); AssertLocatorValue(page.FirstChild, By.Id("Test1")); Assert.IsNotNull(page.FirstChild.SecondChild); AssertLocatorValue(page.FirstChild.SecondChild, By.Id("Test2")); var element = page.FirstChild.SecondChild; Assert.IsNotNull(element.SearchContext); Assert.IsNotNull(element.Driver); Assert.AreSame(driver.Object, element.Driver); Assert.AreSame(page.FirstChild, element.SearchContext); }
public void TestCreatePageWithBrowserArgument() { var driver = new Mock<IWebDriver>(); var browser = new Mock<IBrowser>(MockBehavior.Strict); var pageFunc = new SeleniumPageBuilder().CreatePage(typeof(BrowserDocument)); var pageObject = pageFunc(driver.Object, browser.Object, null); var page = pageObject as BrowserDocument; Assert.IsNotNull(page); Assert.IsNotNull(page.Browser); driver.VerifyAll(); browser.VerifyAll(); }
public void TestMissingArgumentConstructor() { var builder = new SeleniumPageBuilder(); var pageFunc = builder.CreatePage(typeof(NoConstructorElement)); Assert.IsNotNull(pageFunc); var driver = new Mock<IWebDriver>(); var browser = new Mock<IBrowser>(MockBehavior.Strict); var page = pageFunc(driver.Object, browser.Object, null); Assert.IsNotNull(page); Assert.IsInstanceOfType(page, typeof(NoConstructorElement)); }
public void TestCreatePageWithNativeProperties() { var driver = new Mock<IWebDriver>(MockBehavior.Strict); var browser = new Mock<IBrowser>(MockBehavior.Strict); var listItem = new Mock<IWebElement>(MockBehavior.Loose); listItem.Setup(l => l.Displayed).Returns(true); var itemList = new ReadOnlyCollection<IWebElement>(new[] { listItem.Object }); // Setup list mock var listElement = new Mock<IWebElement>(MockBehavior.Strict); listElement.Setup(l => l.FindElements(By.TagName("LI"))).Returns(itemList); // Setup mock for list driver.Setup(d => d.FindElement(By.Id("ListDiv"))).Returns(listElement.Object); var pageFunc = new SeleniumPageBuilder().CreatePage(typeof(BuildPage)); var pageObject = pageFunc(driver.Object, browser.Object, null); var page = pageObject as BuildPage; Assert.IsNotNull(page); Assert.IsNotNull(page.TestButton); AssertLocatorValue(page.TestButton, By.Id("MyControl")); Assert.IsNotNull(page.CombinedControl); AssertLocatorValue(page.CombinedControl, new ByChained(By.Id("Field1"), By.LinkText("The Button"))); Assert.IsNotNull(page.UserName); AssertLocatorValue(page.UserName, By.Name("UserName")); // Image Url Testing Assert.IsNotNull(page.ImageElement); AssertLocatorValue(page.ImageElement, By.XPath("//img[@src='/myapp']")); // Link Url Testing Assert.IsNotNull(page.LinkElement); AssertLocatorValue(page.LinkElement, By.XPath("//a[@href='/myapp']")); // Link Area Url Testing Assert.IsNotNull(page.LinkAreaElement); AssertLocatorValue(page.LinkAreaElement, By.XPath("//area[@href='/myapp']")); // Image Alt Testing Assert.IsNotNull(page.AltImageElement); AssertLocatorValue(page.AltImageElement, By.XPath("//img[@alt='Alt Text']")); // Value Attribute Testing Assert.IsNotNull(page.ValueElement); AssertLocatorValue(page.ValueElement, By.XPath("//input[@value='something']")); // Title Attribute Testing Assert.IsNotNull(page.TitleElement); AssertLocatorValue(page.TitleElement, By.XPath("//p[@title='royal']")); // Type Attribute Testing Assert.IsNotNull(page.InputTypeElement); AssertLocatorValue(page.InputTypeElement, By.XPath("//input[@type='password']")); // Index Attribute Testing Assert.IsNotNull(page.IndexElement); AssertLocatorValue(page.IndexElement, By.XPath("//button[1]")); // Nesting Test Assert.IsNotNull(page.MyDiv); AssertLocatorValue(page.MyDiv, By.ClassName("btn")); Assert.IsNotNull(page.MyDiv.InternalButton); AssertLocatorValue(page.MyDiv.InternalButton, By.Id("InternalItem")); //List Test Assert.IsNotNull(page.MyCollection); Assert.IsInstanceOfType(page.MyCollection, typeof(SeleniumListElementWrapper<IWebElement, ListItem>)); var propertyList = (SeleniumListElementWrapper<IWebElement, ListItem>)page.MyCollection; Assert.IsNotNull(propertyList.Parent); AssertLocatorValue(propertyList.Parent, By.Id("ListDiv")); // Test First Element var element = propertyList.FirstOrDefault(); Assert.IsNotNull(element); Assert.IsNotNull(element.MyTitle); AssertLocatorValue(element.MyTitle, By.Id("itemTitle")); listElement.VerifyAll(); listItem.VerifyAll(); driver.VerifyAll(); }
public void TestCreatePageWithDuplicateNativeAndLocatorAttributes() { var driver = new Mock<IWebDriver>(); var browser = new Mock<IBrowser>(MockBehavior.Strict); var pageFunc = new SeleniumPageBuilder().CreatePage(typeof(NativeAttributePage)); var pageObject = pageFunc(driver.Object, browser.Object, null); var page = pageObject as NativeAttributePage; Assert.IsNotNull(page); Assert.IsNotNull(page.DuplicateElement); AssertLocatorValue(page.DuplicateElement, By.Id("1234")); }
public void TestCreatePageWithCombinedNativeAndLocatorAttributes() { var driver = new Mock<IWebDriver>(); var browser = new Mock<IBrowser>(MockBehavior.Strict); var pageFunc = new SeleniumPageBuilder().CreatePage(typeof(NativeAttributePage)); var pageObject = pageFunc(driver.Object, browser.Object, null); var page = pageObject as NativeAttributePage; Assert.IsNotNull(page); Assert.IsNotNull(page.CombinedElement); AssertLocatorValue(page.CombinedElement, new ByChained(By.Id("combined"), By.TagName("DIV"))); }
public void TestCreatePage() { var driver = new Mock <IWebDriver>(MockBehavior.Strict); var browser = new Mock <IBrowser>(MockBehavior.Strict); var listItem = new Mock <IWebElement>(MockBehavior.Loose); listItem.Setup(l => l.Displayed).Returns(true); var itemList = new ReadOnlyCollection <IWebElement>(new[] { listItem.Object }); // Setup list mock var listElement = new Mock <IWebElement>(MockBehavior.Strict); listElement.Setup(l => l.FindElements(By.TagName("LI"))).Returns(itemList); // Setup mock for list driver.Setup(d => d.FindElement(By.Id("ListDiv"))).Returns(listElement.Object); var pageFunc = new SeleniumPageBuilder().CreatePage(typeof(BuildPage)); var pageObject = pageFunc(driver.Object, browser.Object, null); var page = pageObject as BuildPage; Assert.IsNotNull(page); Assert.IsNotNull(page.TestButton); AssertLocatorValue(page.TestButton, By.Id("MyControl")); Assert.IsNotNull(page.CombinedControl); AssertLocatorValue(page.CombinedControl, new ByChained(By.Id("Field1"), By.LinkText("The Button"))); Assert.IsNotNull(page.UserName); AssertLocatorValue(page.UserName, By.Name("UserName")); // Nesting Test Assert.IsNotNull(page.MyDiv); AssertLocatorValue(page.MyDiv, By.ClassName("btn")); Assert.IsNotNull(page.MyDiv.InternalButton); AssertLocatorValue(page.MyDiv.InternalButton, By.Id("InternalItem")); //List Test Assert.IsNotNull(page.MyCollection); Assert.IsInstanceOfType(page.MyCollection, typeof(SeleniumListElementWrapper <IWebElement, ListItem>)); var propertyList = (SeleniumListElementWrapper <IWebElement, ListItem>)page.MyCollection; Assert.IsNotNull(propertyList.Parent); AssertLocatorValue(propertyList.Parent, By.Id("ListDiv")); // Test First Element var element = propertyList.FirstOrDefault(); Assert.IsNotNull(element); Assert.IsNotNull(element.MyTitle); AssertLocatorValue(element.MyTitle, By.Id("itemTitle")); listElement.VerifyAll(); listItem.VerifyAll(); driver.VerifyAll(); }
public void TestCreatePageWithNativeProperties() { var driver = new Mock <IWebDriver>(MockBehavior.Strict); var browser = new Mock <IBrowser>(MockBehavior.Strict); var listItem = new Mock <IWebElement>(MockBehavior.Loose); listItem.Setup(l => l.Displayed).Returns(true); var itemList = new ReadOnlyCollection <IWebElement>(new[] { listItem.Object }); // Setup list mock var listElement = new Mock <IWebElement>(MockBehavior.Strict); listElement.Setup(l => l.FindElements(By.TagName("LI"))).Returns(itemList); // Setup mock for list driver.Setup(d => d.FindElement(By.Id("ListDiv"))).Returns(listElement.Object); var pageFunc = new SeleniumPageBuilder().CreatePage(typeof(BuildPage)); var pageObject = pageFunc(driver.Object, browser.Object, null); var page = pageObject as BuildPage; Assert.IsNotNull(page); Assert.IsNotNull(page.TestButton); AssertLocatorValue(page.TestButton, By.Id("MyControl")); Assert.IsNotNull(page.CombinedControl); AssertLocatorValue(page.CombinedControl, new ByChained(By.Id("Field1"), By.LinkText("The Button"))); Assert.IsNotNull(page.UserName); AssertLocatorValue(page.UserName, By.Name("UserName")); // Image Url Testing Assert.IsNotNull(page.ImageElement); AssertLocatorValue(page.ImageElement, By.XPath("//img[@src='/myapp']")); // Link Url Testing Assert.IsNotNull(page.LinkElement); AssertLocatorValue(page.LinkElement, By.XPath("//a[@href='/myapp']")); // Link Area Url Testing Assert.IsNotNull(page.LinkAreaElement); AssertLocatorValue(page.LinkAreaElement, By.XPath("//area[@href='/myapp']")); // Image Alt Testing Assert.IsNotNull(page.AltImageElement); AssertLocatorValue(page.AltImageElement, By.XPath("//img[@alt='Alt Text']")); // Value Attribute Testing Assert.IsNotNull(page.ValueElement); AssertLocatorValue(page.ValueElement, By.XPath("//input[@value='something']")); // Title Attribute Testing Assert.IsNotNull(page.TitleElement); AssertLocatorValue(page.TitleElement, By.XPath("//p[@title='royal']")); // Type Attribute Testing Assert.IsNotNull(page.InputTypeElement); AssertLocatorValue(page.InputTypeElement, By.XPath("//input[@type='password']")); // Index Attribute Testing Assert.IsNotNull(page.IndexElement); AssertLocatorValue(page.IndexElement, By.XPath("//button[1]")); // Nesting Test Assert.IsNotNull(page.MyDiv); AssertLocatorValue(page.MyDiv, By.ClassName("btn")); Assert.IsNotNull(page.MyDiv.InternalButton); AssertLocatorValue(page.MyDiv.InternalButton, By.Id("InternalItem")); //List Test Assert.IsNotNull(page.MyCollection); Assert.IsInstanceOfType(page.MyCollection, typeof(SeleniumListElementWrapper <IWebElement, ListItem>)); var propertyList = (SeleniumListElementWrapper <IWebElement, ListItem>)page.MyCollection; Assert.IsNotNull(propertyList.Parent); AssertLocatorValue(propertyList.Parent, By.Id("ListDiv")); // Test First Element var element = propertyList.FirstOrDefault(); Assert.IsNotNull(element); Assert.IsNotNull(element.MyTitle); AssertLocatorValue(element.MyTitle, By.Id("itemTitle")); listElement.VerifyAll(); listItem.VerifyAll(); driver.VerifyAll(); }