Example #1
0
        public Page(IWebDriver browser, IWebElement link, Page parrent)
        {
            _browser = browser;
            Parrent = parrent;
            Children = new List<Page>();

            // Root page
            if (link == null || parrent == null)
            {
                Title = "Root page";
                Url = new Uri(_browser.Url);
                PageDepth = 0;
            }
            // All other pages
            else
            {
                Title = link.Text;
                Url = new Uri(link.GetAttribute("href"));
                PageDepth = parrent.PageDepth+1;
            }
        }
Example #2
0
        public void Init(string url, EBrowser browser, Regex regExp, int maxDepth)
        {
            _timerStart = Environment.TickCount;
            _regExp = regExp;
            _maxDepth = maxDepth;

            // Set which browser to test
            _browser = browser;

            switch (_browser)
            {
                case EBrowser.Chrome:
                    _driver = new ChromeDriver();
                    break;
                case EBrowser.Firefox:
                    _driver = new FirefoxDriver();
                    break;
                case EBrowser.InternetExplorer:
                    _driver = new InternetExplorerDriver();
                    break;
                default:
                    _driver = new RemoteWebDriver(DesiredCapabilities.HtmlUnitWithJavaScript());
                    break;
            }

            // Load root page
            _driver.Navigate().GoToUrl(url);
            RootPage = new Page(_driver, null, null) { Source = _driver.PageSource };
            #if DEBUG
            _driver.Manage().Timeouts().ImplicitlyWait(new TimeSpan(0, 0, 1));
            #else
            _driver.Manage().Timeouts().ImplicitlyWait(new TimeSpan(0, 0, 5));
            #endif
        }
Example #3
0
        public void CollectLinks(Regex regExp, int maxDepth)
        {
            int count = _browser.FindElements(By.TagName("a")).Count;

            for (int i = 0; i < count; i++)
            {
                var webElement = _browser.FindElements(By.TagName("a")).ElementAtOrDefault(i);
                var child = new Page(_browser, webElement, this);
                Children.Add(child);

                var m = regExp.Match(child.Url.AbsoluteUri);
                if (m.Success && PageDepth < maxDepth)
                {
                    webElement.Click();
                    child.Source = _browser.PageSource;
                    child.CollectLinks(regExp, maxDepth);
                    _browser.Navigate().Back();
                }

            }
        }