Перейти к содержимому

Фотография

Как оптимальней удалить из списка строки?

C# webdriver selenium

  • Авторизуйтесь для ответа в теме
В теме одно сообщение

#1 Selen34

Selen34

    Новый участник

  • Members
  • Pip
  • 41 сообщений

Отправлено 17 декабря 2016 - 20:33

СПОЛЬЗУЕТСЯ: WebDriver, С#

 

СЦЕНАРИЙ:

  1. Переходим на сайт
  2. Парсим список ссылок из элементов страницы по средствам By.CssSelector(a[href*=ibm])
  3. Получаем список в котором текстовые поля некоторых позиций пустые (см. скрин).
  4. Удаляем пустые позиции.

 

Для парсинга использую код

КОД:

	List<IWebElement> link; 
      private void button1_Click(object sender, EventArgs e)
        {
            link = browser1.FindElements(By.CssSelector(a[href*=ibm])).ToList(); // собираем все ссылки со страницы в список
        }

Для удаления пустых позиций использую код

КОД:

for (int i = 0; i < link.Count; i++) 
{
  String c = link[i].Text;  
  if (c.Equals("")) 
   { 
      link.RemoveAt(i);
    }
}

Хотел попробовать удаление с помощью RemoveAll,

link.RemoveAll("");

 

 но выражение в скобках - "" подчёркивается красным и выдаёт ошибку:

Argument 1: cannot convert from 'string' to 'System.Predicate<OpenQA.Selenium.IWebElement>'

 

 

ВОПРОС

  1. Как удалить пустые позиции из списка с помощью "RemoveAll"?
  2. Какие есть более эффективные способы для реализации данной задачи (удаление строк из списка по критерию)?

Прикрепленные файлы

  • Прикрепленный файл  1.jpg   124,78К   0 Количество загрузок:

  • 0

#2 Freiman

Freiman

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 591 сообщений
  • ФИО:Андрей Адеркин
  • Город:Йошкар-Ола

Отправлено 18 декабря 2016 - 08:23

Можно сделать через RemoveAll и lambda-выражение.
Для вашего случая это будет что-то вроде

link.RemoveAll(item => item.Text.Equals(""));

но в полной корректности выражения не уверен


  • 1



Темы с аналогичным тегами C#, webdriver, selenium

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных