public async Task StartAsync() { _webDriver.Url = _url; var selectElement = _webDriver.FindElement(By.Name("example_length")); var selectDropButton = new SelectElement(selectElement); selectDropButton.SelectByValue("-1"); var gamesinfo = _webDriver.FindElements(By.XPath(@"//tr[@role='row']//td[@class='dt-gametitle sorting_1']//a")); var gameUrls = gamesinfo .Select(t => t.GetAttribute("href")) .ToArray(); foreach (var gameurl in gameUrls) { _webDriver.Url = gameurl; var mainGameInfo = _webDriver.FindElements(By.XPath("//div[@class='full-story-content']/span")).FirstOrDefault().Text; if (mainGameInfo == null) { throw new Exception("mainGameInfo was null, maybe cant get tags"); } var gameInfoArray = mainGameInfo.Split(new[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries); GameInfoModel gameInfoModel = new GameInfoModel { Name = _webDriver.FindElement(By.Id("news-title")).Text, Rate = _webDriver.FindElement(By.ClassName("rate")).Text, Release = gameInfoArray[0].Replace("▶Дата выпуска: ", string.Empty), Developer = gameInfoArray[1].Replace("▶ Разработчик, издатель: ", string.Empty), Genre = gameInfoArray[2].Replace("▶Жанр: ", string.Empty), Platform = gameInfoArray[3].Replace("▶Платформа: ", string.Empty), Language = gameInfoArray[4].Replace("▶Язык: ", string.Empty), Description = gameInfoArray.Skip(6).Take(5).Aggregate(string.Empty, (t, k) => t + k) }; OnGameReceived?.Invoke(this, new CooplandGameDataArgs { Game = gameInfoModel }); } }
public override void ResponseReceived(string response) { JObject jObject; try { jObject = JObject.Parse(response); } catch (JsonReaderException) { return; } if (jObject["Solution"] == null) { OnGameReceived?.Invoke(this, response); return; } OnSolutionReceived?.Invoke(this, jObject["Solution"].ToString()); }
public override void ResponseReceived(string response) { response = response.TrimJasonEnd(); JObject responseJason; try { responseJason = JObject.Parse(response); } catch (JsonReaderException e) { return; } if (responseJason.Property("Direction") != null) { JToken token = responseJason.Property("Direction").Value; UpdateRivalLocation(token.Value <string>()); OnOpponentMoved?.Invoke(this, token.Value <string>()); return; } OnGameReceived?.Invoke(this, response); }