public void ThenAllResultsAreUnderMiles(int selectedMiles) { while (this.commonHelper.IsElementDisplayed(By.CssSelector("li[class=next]"))) { this.Context.GetWebDriver().FindElement(By.CssSelector("span[class=pagination-label]")).Click(); } var results = this.Context.GetWebDriver().FindElements(By.CssSelector(".govuk-\\!-margin-top-6")); var searchResults = new List <SearchResult>(); foreach (var resultContainer in results) { var searchResult = new SearchResultSupport(this.Context, resultContainer).GetResult(); searchResults.Add(searchResult); } foreach (var result in searchResults) { var miles = result.Location.Split('(', ')')[1]; double milesNo; double.TryParse(miles, out milesNo); if (milesNo > selectedMiles) { throw new Exception($"Check course results. Result contains course(s) outside of the distance selected"); } else if (string.IsNullOrEmpty(result.Location)) { throw new Exception($"Check course results. Location is not displayed however should be shown"); } } }
public void ThenSearchResultsAreUpdated() { Thread.Sleep(5000); var results = this.Context.GetWebDriver().FindElements(By.CssSelector(".govuk-\\!-margin-top-6")); Assert.True(results.Count > 0); Assert.True(results.Count <= int.Parse(Context.Get <IObjectContext>().GetObject("SearchResultsCount"))); var searchResults = new List <SearchResult>(); foreach (var resultContainer in results) { var searchResult = new SearchResultSupport(this.Context, resultContainer).GetResult(); searchResults.Add(searchResult); } this.Context.Get <IObjectContext>().UpdateObject("SearchResults", searchResults); }
public void ThenSearchResultsAreDisplayed() { // This needs to be updated. The nuget package needs an implicit wait for an object to go stale (the // object refreshed). You need to set the search results container in the object context before // clicking the search button. Then in this step you need to retrieve the container and carry out // a wait for the object to go stale. Once it's gone stale then the search results have refreshed. Thread.Sleep(5000); var results = this.Context.GetWebDriver().FindElements(By.CssSelector(".govuk-\\!-margin-top-6")); Assert.True(results.Count > 0); this.Context.Get <IObjectContext>().SetObject("SearchResultsCount", results.Count); var searchResults = new List <SearchResult>(); foreach (var resultContainer in results) { var searchResult = new SearchResultSupport(this.Context, resultContainer).GetResult(); searchResults.Add(searchResult); } // This should read like the following line. This is a bug with the nuget package: // this.Context.GetObjectContext().SetObject("SearchResults", searchResults); this.Context.Get <IObjectContext>().SetObject("SearchResults", searchResults); }