/// <summary> /// Search production site /// </summary> /// <param name="searchSite">Production Site to search</param> /// <returns>Searched results</returns> public static List <SearchedResult> Search(SearchSite searchSite) { IReadOnlyList <IWebElement> elements = WebDriver.FindElements(By.TagName("input")); foreach (IWebElement element in elements) { if (element.Enabled && element.Displayed) { string keyWord = GetDescription(searchSite); element.Clear(); element.SendKeys(keyWord + "\n"); break; } } List <SearchedResult> searchedResults = new List <SearchedResult>(); IReadOnlyList <IWebElement> searchedElementResults; int waitTime = Int32.Parse(ConfigurationManager.AppSettings["WaitTime"]); var wait = new WebDriverWait(WebDriver, TimeSpan.FromSeconds(waitTime)); switch (searchEngine) { case "google": wait.Until(ExpectedConditions.ElementExists(By.CssSelector("h3>a"))); searchedElementResults = WebDriver.FindElements(By.CssSelector("h3>a")); break; case "bing": wait.Until(ExpectedConditions.ElementExists(By.CssSelector("li>h2>a"))); searchedElementResults = WebDriver.FindElements(By.CssSelector("li>h2>a")); break; default: searchedElementResults = null; break; } if (searchedElementResults != null) { for (int i = 0; i < searchedElementResults.Count; i++) { SearchedResult result = new SearchedResult(); result.Name = searchedElementResults[i].Text; result.DetailLink = searchedElementResults[i].GetAttribute("href"); searchedResults.Add(result); } } return(searchedResults); }
/// <summary> /// Verify whether the ranking of the site search result is acceptable /// </summary> /// <param name="lowestRanking">The expected lowest ranking for the site search result</param> /// <param name="ranking">The actual ranking</param> /// <returns>True if ranking is less than lowestRanking, else no.</returns> private static bool CanFindSiteinSearchResults(SearchSite item, string link, int lowestRanking, out int ranking) { ranking = 0; bool isFounded = false; List <SearchedResult> searchedResults = Search(item); foreach (SearchedResult result in searchedResults) { if (ranking >= lowestRanking) { break; } if (result.DetailLink.Contains(link)) { isFounded = true; break; } ranking++; } return(isFounded); }