Постоянно вылетает ошибка: Заданный аргумент находится вне диапазона допустимых значений.

artsmm

Client
Регистрация
03.10.2018
Сообщения
1 109
Благодарностей
195
Баллы
63
Выполнение действия CSharp OwnCode: Работа с bukvariks. Заданный аргумент находится вне диапазона допустимых значений.
Имя параметра: i

Какой аргумент, где его искать?

Собственно, в чем может быть вопрос?
C#:
Tab tab = instance.ActiveTab;
Random rnd = new Random();

//1. Заходим в wordstat, получаем частотность ключевого слова WS_frequency
string keyword = Convert.ToString(project.Variables["keyphrase"].Value);
string uniq = Convert.ToString(project.Variables["uniq"].Value);
string bukvar_check = project.Variables["bukvar_check"].Value;
string wordstat_frequency = project.Variables["wordstat_frequency"].Value;
int keys_count = Convert.ToInt32(project.Variables["tab_count"].Value);

project.SendInfoToLog("Заходим в букварикс, используем ключ " + keyword, true);
tab.Navigate("https://www.bukvarix.com/bukvarix_keywords_example.html");
tab.WaitDownloading();

for(int k=0; k<=keys_count;k++){
    
    //Берем данные из таблицы
    lock(SyncObjects.TableSyncer){
  
        // берем первую строку с удалением и раскидываем значения по переменным
        var row = project.Tables["Site_report"].GetRow(0).ToList();
        project.Tables["Site_report"].DeleteRow(0);
        project.Variables["target_domain"].Value = row[0];
        project.Variables["keyphrase"].Value = row[1];
        project.Variables["region"].Value = row[2];
        project.Variables["dom_zone"].Value = row[3];
        project.Variables["competitor"].Value = row[4];
    }
    
    tab.KeyEvent("a", "press", "ctrl");
    Thread.Sleep(rnd.Next(100,500));
    tab.KeyEvent("DELETE", "press", "");
    Thread.Sleep(rnd.Next(200,900));
    project.SendInfoToLog("Вводим ключ " + keyword, true);
    instance.SendText(keyword, 21);
    tab.KeyEvent("enter", "press", "");
    
    //Проверяем, есть ли частотность по ключу
    string regex = @"(?<=<td\ colspan='5'\ class='dataTables_empty'\ valign='top'>).*(?=</td></tr></tbody></table></div>)";
    string text =  tab.DomText;
    var reg = new System.Text.RegularExpressions.Regex(regex);
    bukvar_check = reg.Matches(text)[0].ToString();
    
    if (bukvar_check == "Нет результатов"){
        project.SendInfoToLog("Не найдена частота для ключевого слова " + keyword + " берем другой", true);
        tab.KeyEvent("a", "press", "ctrl");
        Thread.Sleep(rnd.Next(100,500));
        tab.KeyEvent("DELETE", "press", "");
        Thread.Sleep(rnd.Next(200,900));
        project.SendInfoToLog("Вводим ключ " + keyword, true);
        instance.SendText(keyword, 21);
        tab.KeyEvent("enter", "press", "");
    }else{
        Thread.Sleep(800);
    
        //Парсим частотность по нужному ключевому слову
        project.SendInfoToLog("Парсим частотность ключа", true);
        
        //выдергиваем первое значение
        string regex2 = @"(?<=</td><td\ class='\ dt-body-right'>).*?(?=</td><td\ class='\ dt-body-right'>)"; // в кавычках заключаем регулярное выражение
        string text2 =  tab.DomText;
        var reg2 = new System.Text.RegularExpressions.Regex(regex2);
        wordstat_frequency = reg2.Matches(text2)[2].ToString();
        
        Thread.Sleep(800);   
    }

    //Добавляем нужные значения в табличку
    lock(SyncObjects.TableSyncer){
        project.Tables["Site_report"].AddRow(project.Variables["target_domain"].Value+"\t"+project.Variables["keyphrase"].Value+"\t"+
        project.Variables["region"].Value+"\t"+project.Variables["dom_zone"].Value+"\t"+project.Variables["competitor"].Value+"\t"+project.Variables["wordstat_frequency"].Value);
        project.SendInfoToLog("Записываем частотность в табличку в + к имеющимся данным - " + project.Variables["wordstat_frequency"].Value, true);
        project.SendInfoToLog("Пишем строку " + (k++), true);
    }
}
 

artsmm

Client
Регистрация
03.10.2018
Сообщения
1 109
Благодарностей
195
Баллы
63
Ошибки вызывают именно блоки с регулярками
 

dafaroff

Client
Регистрация
03.05.2011
Сообщения
76
Благодарностей
136
Баллы
33
Ничего не может найти по этому регулярному выражению.
Оберни в
Код:
try
{
}catch{}
 

artsmm

Client
Регистрация
03.10.2018
Сообщения
1 109
Благодарностей
195
Баллы
63
Ничего не может найти по этому регулярному выражению.
Оберни в
Код:
try
{
}catch{}
Спасибо. Это хорошо))
Те вся суть, в том что по данной регуляке ничего не находит, поэтому ошибка?
 

dafaroff

Client
Регистрация
03.05.2011
Сообщения
76
Благодарностей
136
Баллы
33
Скорее всего, может быть неправильный индекс совпадения.
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 683
Баллы
113
С регуляркой всегда так. если она ничего не находит то генерирует исключение. я регулярки всегда в try {}catch{} оборачиваю.
в catch{} еще вставляю присваивание нужных мне параметров
 

artsmm

Client
Регистрация
03.10.2018
Сообщения
1 109
Благодарностей
195
Баллы
63
С регуляркой всегда так. если она ничего не находит то генерирует исключение. я регулярки всегда в try {}catch{} оборачиваю.
в catch{} еще вставляю присваивание нужных мне параметров
Спасибо) да, слышал про этот способ. Какие параметры присваиваете обычно?
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 683
Баллы
113

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)