Длительное ожидание элемента с нужным значением - C#
Формулировка задачи:
Привет, мужики.
Пишу программу на Visual Studio С# + selenium (отличное сочетание).
Знания С# и selenium низкие. Поэтому появились затруднения и прошу помощи.
Изначально такой текст html:
Через 5 минут, а может и через 5 часов, становится таким:
Мне нужно чтобы программа сидела на сайте 5 минут или 5 часов и ждала когда появится: div.c-events__score именно с тайтлом "2 element". И когда элемент появится, то должна вернуться ссылка только появившегося элемента.
Как это реализовать? Бесконечный цикл и каждый раз дергать код сайта - глупая идея. Есть же варианты разумнее.
Заранее спасибо!
Листинг программы
- <li class="c-events__item c-events__item_col">
- <a href="https://.....com" class="c-events__name"></a>
- <div class="c-events__dop">
- <div title="1 element" class="c-events__score">
- <span class="c-events__fullScore">1 element</span>
- </div>
- </li>
Листинг программы
- <li class="c-events__item c-events__item_col">
- <a href="https://.....com" class="c-events__name">1 element</a>
- <div class="c-events__dop">
- <div title="1 element" class="c-events__score">
- <span class="c-events__fullScore">1 element</span>
- </div>
- </li>
- <li class="c-events__item c-events__item_col">
- <a href="https://.....com" class="c-events__name">2 element</a>
- <div class="c-events__dop">
- <div title="2 element" class="c-events__score">
- <span class="c-events__fullScore">2 element</span>
- </div>
- </li>
Решение задачи: «Длительное ожидание элемента с нужным значением»
textual
Листинг программы
- public bool isElementPresent(By by)
- {
- try
- {
- Browser.FindElement(by);
- return true;
- }
- catch (NoSuchElementException e)
- {
- return false;
- }
- }
- bool stopserach = false;
- List<IWebElement> AllGLi;
- List<IWebElement> AllGSc;
- do
- {
- if (isElementPresent(By.CssSelector("a.c-events__name")) == true && isElementPresent(By.CssSelector(".c-events__score")) == true)
- {
- AllGLi = Browser.FindElements(By.CssSelector("a.c-events__name")).ToList();
- AllGSc = Browser.FindElements(By.CssSelector(".c-events__score")).ToList();
- for (int i = 0; i < AllGLi.Count; i++)
- {
- String securegame = AllGSc[i].GetAttribute("title");
- if (securegame.ToString() == "Текст который должен появиться на странице")
- {
- listboxlog.Items.Add( AllGLi[i].GetAttribute("href") + ' ' + AllGSc[i].GetAttribute("title"));
- stopserach = true;
- }
- }
- }
- } while (stopserach != true);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д