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; } }
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 }
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(); } } }