Код Selinium нарушается после того, как он работает в течение некоторого времени - PullRequest
0 голосов
/ 11 апреля 2019

Итак, у меня есть веб-страница, которая содержит 37 логотипов в следующем HTML-коде, и мне нужно извлечь текст внутри атрибута «alt».

HTML-код следующий:

<div class="logo__wrapper col-6 col-sm-4 col-md col-xl -gutter-bottom">
   <div data-lazy="true" data-src="https://www.talkdesk.com/app/themes/talkdesk-com/assets/images/logos/ibm.svg" data-alt="ibm" data-class="logo">
      <img src="https://www.talkdesk.com/app/themes/talkdesk-com/assets/images/logos/ibm.svg" alt="ibm" class="logo" data-load="lazy"></div>
</div>

Мой C # выглядит следующим образом:

 IReadOnlyCollection<IWebElement> customersPresent = driver.FindElements(By.XPath("//div[@class='logo__wrapper col-6 col-sm-4 col-md col-xl -gutter-bottom']"));              
 Assert.Greater(customersPresent.Count, 0);
 string[] customersArray = new string[customersPresent.Count];
 int conta = 0;
 foreach (IWebElement clientes in customersPresent)
 {
   customersArray[conta] = clientes.FindElement(By.TagName("div")).GetAttribute("data-alt");                
   conta++;
   TestContext.Progress.WriteLine("Logos Name Customers Page: " + customersArray[conta]+ "Conta" +conta);
            }

Код работает нормально, но после 31 раза код не работает, и я получил следующее сообщение:

Сообщение: OpenQA.Selenium.NoSuchElementException: нет такого элемента: невозможно найти элемент: {"method": "tag name", "selector": "div"}

У меня нет выбора, можете ли вы мне помочь, пожалуйста?

1 Ответ

0 голосов
/ 12 апреля 2019

Я бы попробовал следующий подход.

 IReadOnlyCollection<IWebElement> customersPresent = driver.FindElements(By.XPath("//div[@class='logo__wrapper col-6 col-sm-4 col-md col-xl -gutter-bottom']/doc"));

Теперь получите атрибут 'data-alt' непосредственно для каждой коллекции выборов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...