- Регистрация
- 15.03.2015
- Сообщения
- 105
- Благодарностей
- 38
- Баллы
- 28
Всем привет, прошу помощи в поиске причины ошибки.
Написал код под задачу удаление постов со стены группы Vk.com в которых присутствуют дохлые ссылки, но шаблон останавливается и выскакивает ошибка:
Вот сам код:
Написал код под задачу удаление постов со стены группы Vk.com в которых присутствуют дохлые ссылки, но шаблон останавливается и выскакивает ошибка:
Шаблон выполняет все действия до момента закрытия поста и соответственно удаления.Индекс за пределами диапазона. Индекс должен быть положительным числом, а его размер не должен превышать размер коллекции.
Имя параметра: index
Вот сам код:
Не могу додуматься, как сконструировать логику этого кода, может другой цикл, или ещё чего посоветуете?// Объявляем переменную отвечающую за список ссылок на редактирование
var LinkList = project.Lists["LinkList"];
//Создаём коллекцию из записей с возможностью редактирования + кладём это количество в переменную EditCount
var PostEditCollection = instance.ActiveTab.FindElementsByAttribute("div", "class","post_edit_button", "regexp");
//var EditCount = PostEditCollection.Count;
// Создаём цикл обработки ссылок
for (int l = 0; l<= PostEditCollection.Count; l++)
{
// Очищаем список ссылок для обработки
project.Lists["LinkList"].Clear();
// Нажимаем на кнопку редактирования поста
var EditButton = PostEditCollection.GetByNumber(l);
EditButton.Click();
System.Threading.Thread.Sleep(1000); // пауза
// Находим поле с текстом для редактирования
var GetText = instance.ActiveTab.FindElementByAttribute("div", "id", "wpe_text", "regexp", 0);
// Берём текст для редактирования
var InnerText = GetText.GetAttribute("innertext");
//return InnerText;
// Вытягиваем регулярками все ссылки в посте + перекладываем их в массив
var matches = Regex.Matches(InnerText, @"(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?").Cast<Match>().Select(m => m.Value).ToArray();
// Перекладываем данные из массива в список
LinkList.AddRange(matches);
//return LinkList.Count;
////////////////////////// производим обработку взятых линков /////////////////////////////////
for (int a = 0; a <= LinkList.Count; a++ )
{
// Берём ссылку под индексом (а)
var LinkForEdit = LinkList[a];
//return LinkForEdit;
// Производим Get запрос по этой ссылке
var GetAliForRealLink = ZennoPoster.HttpGet(LinkForEdit, String.Empty, "UTF-8", ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderOnly);
var response = Regex.Matches(GetAliForRealLink, @"HTTP/.*").Cast<Match>().Select(m => m.Value).ToArray();
project.Variables["Parsresponse"].Value = string.Join("; ", response);
//return project.Variables["Parsresponse"].Value;
}
if (project.Variables["Parsresponse"].Value.Contains("404 Not Found"))
{
//Закрываем пост
var CloseButton = instance.ActiveTab.FindElementByAttribute("button", "innertext", "Сохранить", "regexp", 0);
CloseButton.Click();
// Жмём на удаление поста
var PostDelit = instance.ActiveTab.FindElementByAttribute("div", "class", "post_delete_button", "regexp", l);
PostDelit.Click();
}
//Пересчитываем посты с возможностью редактирования
PostEditCollection = instance.ActiveTab.FindElementsByAttribute("div", "class","post_edit_button", "regexp");
}