public void FindElement()
        {
            var htmlNode = new HtmlNodeBuilder("<html><body><div id=\"page-body\">Hello world</div></body></html>").Build();

            var document = new WebElement(htmlNode, null);
            var div = document.FindElement(By.Id("page-body"));

            Assert.That(div.TagName, Is.EqualTo("div"));
            Assert.That(div.Text, Is.EqualTo("Hello world"));
        }
        public void FindElementShouldReturnNullIfNoElementsAreReturned()
        {
            var htmlNode = new HtmlNodeBuilder("<html><body>" +
                   "<a href=\"http://www.google.com\">google</a>" +
                   "</body></html>").Build();

            var document = new WebElementFinder(htmlNode,null);
            var paragraph = document.FindElement(By.TagName("p"));

            Assert.That(paragraph, Is.EqualTo(null));
        }
        public void ClickShouldFollowHrefs()
        {
            var nav = new Mock<INavigation>();

            var htmlNode = new HtmlNodeBuilder("<a href=\"http://www.google.com\">google</a>").Build();

            var webElement = new WebElement(htmlNode, nav.Object);
            webElement.Click();

            nav.Verify( x => x.GoToUrl(htmlNode.Attributes["href"].Value), Times.Once(), "Click() should cause INavigator to go to the url.");
        }
        public void ClickShouldBeIgnoredWhenNotApplicable()
        {
            var nav = new Mock<INavigation>();

            var htmlNode = new HtmlNodeBuilder("<div>This is not a link</div>").Build();

            var webElement = new WebElement(htmlNode, nav.Object);
            webElement.Click();

            nav.Verify(x => x.GoToUrl(It.IsAny<string>()), Times.Never(),
                "Click should not do anything when not applied to a link.");
        }
        public void FindElements()
        {
            var htmlNode = new HtmlNodeBuilder("<html><body>" +
                                           "<ul><li class=\"nav-item\">Item 1</li><li class=\"nav-item\">Item 2</li></ul>" +
                                           "</body></html>").Build();

            var document = new WebElement(htmlNode, null);
            var list = document.FindElements(By.ClassName("nav-item"));

            Assert.That(list.Count, Is.EqualTo(2));
            Assert.That(list[0].TagName, Is.EqualTo("li"));
            Assert.That(list[1].TagName, Is.EqualTo("li"));
        }
        public void GetAttribute()
        {
            var htmlNode = new HtmlNodeBuilder("<a href=\"http://www.google.com\">Google</a>").Build();

            var element = new WebElement(htmlNode, null);

            Assert.That(element.GetAttribute("href"), Is.EqualTo("http://www.google.com"));
        }
        public void Text()
        {
            var htmlNode = new HtmlNodeBuilder("<div>\r\nHello World        \r\n</div>").Build();

            var element = new WebElement(htmlNode, null);
            var textInAnElement = element.Text;

            Assert.That(textInAnElement, Is.EqualTo("Hello World"));
        }
        public void TagName()
        {
            var htmlNode = new HtmlNodeBuilder("<div>Hello DIV Tag</div>").Build();

            var element = new WebElement(htmlNode, null);

            Assert.That(element.TagName, Is.EqualTo("div"));
        }
        public void ReadMethodFromForm()
        {
            var formHtml = new HtmlNodeBuilder("<form method=\"post\" action=\"result.aspx\"></form>").Build();
            var reader = new FormPostDataReader(formHtml);

            Assert.That(reader.Method, Is.EqualTo("post"));
        }
        public void ReadPostDataFromSelectFieldsWithOptionsWithValueAttribute()
        {
            var formHtml = new HtmlNodeBuilder("<form method=\"post\" action=\"result.aspx\">" +
                                               "<select id=\"salary\">" +
                                               "<option value=\"20000\">£20,000</option>" +
                                               "<option value=\"30000\">£30,000</option>" +
                                               "<option value=\"40000+\" selected>£40,000+</option>" +
                                               "</select>" +
                                               "</form>").Build();
            var reader = new FormPostDataReader(formHtml);
            var postData = reader.PostData;

            Assert.That(postData["salary"], Is.EqualTo("40000+"));
        }
        public void ReadPostDataFromInputFields()
        {
            var formHtml = new HtmlNodeBuilder("<form method=\"post\" action=\"result.aspx\">" +
                                               "<input id=\"login\" type=\"text\" value=\"helephant\" />" +
                                               "<input id=\"password\" type=\"password\" value=\"i love joe\" />" +
                                               "</form>").Build();
            var reader = new FormPostDataReader(formHtml);
            var postData = reader.PostData;

            Assert.That(postData["login"], Is.EqualTo("helephant"));
            Assert.That(postData["password"], Is.EqualTo("i love joe"));
        }