示例#1
0
        /// <summary>
        /// 通过css selector 获取元素
        /// 包含iframe处理格式#iframe::.selector
        /// </summary>
        /// <param name="browser"></param>
        /// <param name="selector"></param>
        /// <returns></returns>
        public ElementCollection SelectMany(string selector)
        {
            while (Busy)
            {
                Thread.Sleep(50);
                Application.DoEvents();
            }
            BrowserWindow watinBrowser = new BrowserWindow(this);
            int           index        = selector.IndexOf("::");

            if (index != -1)
            {
                var   iframeSelector = selector.Substring(0, index);
                var   subSelector    = selector.Substring(index + 2);
                Frame frame          = this.WatinBrowser.Frames.Filter(WatiN.Core.Find.BySelector(iframeSelector)).First();
                index = subSelector.IndexOf("::");
                //iframe嵌套iframe的情况
                if (index != -1)
                {
                    iframeSelector = subSelector.Substring(0, index);
                    frame          = watinBrowser.Frames.Filter(WatiN.Core.Find.BySelector(iframeSelector)).First();
                    subSelector    = subSelector.Substring(index + 2);
                }
                return(frame.Elements.Filter(WatiN.Core.Find.BySelector(subSelector)));
            }
            else
            {
                QuerySelectorConstraint constraint = WatiN.Core.Find.BySelector(selector);
                var elements = watinBrowser.Elements.Filter(constraint);
                return(elements);
            }
        }
示例#2
0
        public void Should_return_selector_string_when_calling_WriteDescriptionTo()
        {
            // GIVEN
            var constraint = new QuerySelectorConstraint(".Return >this");
            var sb         = new StringBuilder();

            // WHEN
            constraint.WriteDescriptionTo(new StringWriter(sb));

            // THEN
            Assert.That(sb.ToString(), Is.EqualTo("Selector = '.Return >this'"));
        }
示例#3
0
        public void Should_not_find_div_when_given_selector_returns_an_input()
        {
            ExecuteTest(browser =>
            {
                // GIVEN
                var querySelectorConstraint = new QuerySelectorConstraint("input");

                // WHEN
                var div = browser.Div(querySelectorConstraint);

                // THEN
                Assert.That(div.Exists, Is.False);
            });
        }
示例#4
0
        public void Should_filter_input_elements_with_given_selector_filter()
        {
            ExecuteTest(browser =>
            {
                // GIVEN
                var querySelectorConstraint = new QuerySelectorConstraint("input");

                // WHEN
                var elements = browser.Elements.Filter(querySelectorConstraint);

                // THEN
                Assert.That(elements.Count, Is.EqualTo(19));
            });
        }
示例#5
0
        public void Should_be_able_to_use_double_quotes_in_selector_string()
        {
            ExecuteTest(browser =>
            {
                // GIVEN
                var querySelectorConstraint = new QuerySelectorConstraint("input[name=\"textinput1\"]");

                // WHEN
                var element = browser.Element(querySelectorConstraint);

                // THEN
                Assert.That(element.Exists, Is.True);
            });
        }
示例#6
0
        public void Should_not_find_element_not_inside_container_element()
        {
            ExecuteTest(browser =>
            {
                // GIVEN
                var querySelectorConstraint = new QuerySelectorConstraint("#popupid");
                var containerElement        = browser.Form("FormInputElement");

                // WHEN
                var element = containerElement.Element(querySelectorConstraint);

                // THEN
                Assert.That(element.Exists, Is.False);
            });
        }
示例#7
0
        public void Should_find_element()
        {
            ExecuteTest(browser =>
            {
                // GIVEN
                var querySelectorConstraint = new QuerySelectorConstraint("#popupid");

                // WHEN
                var element = browser.Element(querySelectorConstraint);

                // THEN
                Assert.That(element.Exists, Is.True);
                Assert.That(element.Id, Is.EqualTo("popupid"));
            });
        }
示例#8
0
        public void Should_only_element_inside_container_element()
        {
            ExecuteTest(browser =>
            {
                // GIVEN
                var querySelectorConstraint = new QuerySelectorConstraint("#popupid");
                var containerElement        = browser.Form("Form");

                // WHEN
                var element = containerElement.Element(querySelectorConstraint);

                // THEN
                Assert.That(element.Exists, Is.True);
                Assert.That(element.Id, Is.EqualTo("popupid"));
            });
        }