private static void WaitForPageToLoad(this IBrowser browser, TimeSpan timeoutSpan) { browser.WaitFor(x => x.ExecuteScript("return document.readyState;").Equals("complete"), timeoutSpan); }
public static void WaitForElement(this IBrowser browser, By @by, TimeSpan timeout, bool disapear) { browser.WaitFor(x => (x.FindElements(@by).Count > 0 && !disapear) || (x.FindElements(@by).Count == 0 && disapear), timeout); }
private async Task<string> SelectCity(IBrowser browser, string city, string jsFunc, string context, CancellationToken ct) { await browser.ExecuteJs($"fragma.modules.cities.{jsFunc}('{city}')", ct); var cities = new List<string>(); try { if (!await browser.WaitFor(async () => { var citiesResponse = (await browser.ExecuteJs($"return fragma.modules.cities.{context}.cities", ct) as IList); if (citiesResponse.Count > 0) { foreach (var c in citiesResponse) cities.Add(c.ToString()); return true; } return false; }, 15000, ct)) throw new TimeoutException("Can't find city"); if (!cities.Any()) return null; if (cities.Count == 1) return cities.First(); var weight = 0; var index = 0; var i = 0; foreach (var city1 in cities) { var newWeight = city.GetLevelOfSimilarity(city1); if (newWeight > weight) { index = i; weight = newWeight; } ++i; } if (weight == 0) return null; await browser.Select($"ul.ui-autocomplete li:nth-child({index + 1})", ct); return cities[index]; } catch (Exception) { return null; } }