Длительное ожидание элемента с нужным значением - C#

Узнай цену своей работы

Формулировка задачи:

Привет, мужики. Пишу программу на Visual Studio С# + selenium (отличное сочетание). Знания С# и selenium низкие. Поэтому появились затруднения и прошу помощи. Изначально такой текст html:
<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>
Через 5 минут, а может и через 5 часов, становится таким:
<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>
Мне нужно чтобы программа сидела на сайте 5 минут или 5 часов и ждала когда появится: div.c-events__score именно с тайтлом "2 element". И когда элемент появится, то должна вернуться ссылка только появившегося элемента. Как это реализовать? Бесконечный цикл и каждый раз дергать код сайта - глупая идея. Есть же варианты разумнее. Заранее спасибо!

Решение задачи: «Длительное ожидание элемента с нужным значением»

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);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.071 из 5
Похожие ответы