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

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

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

Привет, мужики. Пишу программу на Visual Studio С# + selenium (отличное сочетание). Знания С# и selenium низкие. Поэтому появились затруднения и прошу помощи. Изначально такой текст html:
Листинг программы
  1. <li class="c-events__item c-events__item_col">
  2. <a href="https://.....com" class="c-events__name"></a>
  3. <div class="c-events__dop">
  4. <div title="1 element" class="c-events__score">
  5. <span class="c-events__fullScore">1 element</span>
  6. </div>
  7. </li>
Через 5 минут, а может и через 5 часов, становится таким:
Листинг программы
  1. <li class="c-events__item c-events__item_col">
  2. <a href="https://.....com" class="c-events__name">1 element</a>
  3. <div class="c-events__dop">
  4. <div title="1 element" class="c-events__score">
  5. <span class="c-events__fullScore">1 element</span>
  6. </div>
  7. </li>
  8. <li class="c-events__item c-events__item_col">
  9. <a href="https://.....com" class="c-events__name">2 element</a>
  10. <div class="c-events__dop">
  11. <div title="2 element" class="c-events__score">
  12. <span class="c-events__fullScore">2 element</span>
  13. </div>
  14. </li>
Мне нужно чтобы программа сидела на сайте 5 минут или 5 часов и ждала когда появится: div.c-events__score именно с тайтлом "2 element". И когда элемент появится, то должна вернуться ссылка только появившегося элемента. Как это реализовать? Бесконечный цикл и каждый раз дергать код сайта - глупая идея. Есть же варианты разумнее. Заранее спасибо!

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

textual
Листинг программы
  1.  
  2. public bool isElementPresent(By by)
  3.         {
  4.             try
  5.             {
  6.                 Browser.FindElement(by);
  7.                 return true;
  8.             }
  9.             catch (NoSuchElementException e)
  10.             {
  11.                 return false;
  12.             }
  13.         }
  14.  
  15.             bool stopserach = false;
  16.             List<IWebElement> AllGLi;
  17.             List<IWebElement> AllGSc;
  18.             do
  19.               {
  20.                   if (isElementPresent(By.CssSelector("a.c-events__name")) == true && isElementPresent(By.CssSelector(".c-events__score")) == true)
  21.                   {
  22.                       AllGLi = Browser.FindElements(By.CssSelector("a.c-events__name")).ToList();
  23.                       AllGSc = Browser.FindElements(By.CssSelector(".c-events__score")).ToList();
  24.                       for (int i = 0; i < AllGLi.Count; i++)
  25.                       {
  26.                           String securegame = AllGSc[i].GetAttribute("title");
  27.                           if (securegame.ToString() == "Текст который должен появиться на странице")
  28.                           {
  29.                               listboxlog.Items.Add( AllGLi[i].GetAttribute("href") + ' ' + AllGSc[i].GetAttribute("title"));
  30.                               stopserach = true;
  31.                           }
  32.                       }
  33.                   }
  34.               } while (stopserach != true);

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


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

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

14   голосов , оценка 4.071 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы