// Объявляем tab
Tab tab = instance.ActiveTab;
// Заводим цикл
for (int i = 0; i < 10; i++)
{
// Проверяем кнопку
if (!tab.FindElementByXPath(".//*",0).IsNull)
{
tab.FindElementByXPath(".//*",0).Click("Full"); // Кликаем
Thread.Sleep(5 * 1000); // Пауза
}
// Проверяем нужный элемент и если нашли, то выходим из цикла
if (!tab.FindElementByXPath(".//[*]",0).IsNull) break;
}
Вроде подобного, главное проверяйте наличие элементов через if.
C#:// Объявляем tab Tab tab = instance.ActiveTab; // Заводим цикл for (int i = 0; i < 10; i++) { // Проверяем кнопку if (!tab.FindElementByXPath(".//*",0).IsNull) { tab.FindElementByXPath(".//*",0).Click("Full"); // Кликаем Thread.Sleep(5 * 1000); // Пауза } // Проверяем нужный элемент и если нашли, то выходим из цикла if (!tab.FindElementByXPath(".//[*]",0).IsNull) break; }
// Текст для обработки
string text = project.ExecuteMacro(instance.ActiveTab.GetSourceText("utf-8"));
var errorIfEmpty = true;
var regexGroups = Macros.TextProcessing.Regex(text, @project.Variables["domain"].Value + "[\\w\\W]*?", "0");
if (regexGroups.Count == 0)
{
if (errorIfEmpty) throw new Exception();
}
else
{
project.Variables["checksource"].Value = regexGroups[0].FirstOrDefault();
}
Tab tab = instance.ActiveTab;
// Текст для обработки
string text = project.ExecuteMacro(instance.ActiveTab.GetSourceText("utf-8"));
var errorIfEmpty = true;
var regexGroups = Macros.TextProcessing.Regex(text, @project.Variables["domain"].Value + "[\\w\\W]*?", "0");
//если по регулярке ничего не нашли, идем на другие страницы
if (regexGroups.Count == 0)
{
for(int i=2;i<11;i++)
{
//переходим на следующую стр
tab.FindElementByXPath($"//a[@class='b_widePag sb_bp'][contains(text(),'{i}')]", 0).Click();
tab.WaitDownloading();
//ищем регулярку. Если нашли покинь цикл
regexGroups = Macros.TextProcessing.Regex(text, @project.Variables["domain"].Value + "[\\w\\W]*?", "0");
if (regexGroups.Count != 0)
{
project.Variables["checksource"].Value = regexGroups[0].FirstOrDefault();
break;
}
}
}
C#:Tab tab = instance.ActiveTab; // Текст для обработки string text = project.ExecuteMacro(instance.ActiveTab.GetSourceText("utf-8")); var errorIfEmpty = true; var regexGroups = Macros.TextProcessing.Regex(text, @project.Variables["domain"].Value + "[\\w\\W]*?", "0"); //если по регулярке ничего не нашли, идем на другие страницы if (regexGroups.Count == 0) { for(int i=2;i<11;i++) { //переходим на следующую стр tab.FindElementByXPath($"//a[@class='b_widePag sb_bp'][contains(text(),'{i}')]", 0).Click(); tab.WaitDownloading(); //ищем регулярку. Если нашли покинь цикл regexGroups = Macros.TextProcessing.Regex(text, @project.Variables["domain"].Value + "[\\w\\W]*?", "0"); if (regexGroups.Count != 0) { project.Variables["checksource"].Value = regexGroups[0].FirstOrDefault(); break; } } }
Tab tab = instance.ActiveTab;
// Текст для обработки
string text = project.ExecuteMacro(instance.ActiveTab.GetSourceText("utf-8"));
var errorIfEmpty = true;
var regexGroups = Macros.TextProcessing.Regex(text, @project.Variables["domain"].Value + "[\\w\\W]*?", "0");
//если по регулярке ничего не нашли, идем на другие страницы
bool flag = false; //флажок, чтобы отследить, нашли ли что-то
if (regexGroups.Count == 0)
{
for(int i=2;i<11;i++)
{
//переходим на следующую стр
tab.FindElementByXPath($"//a[@class='b_widePag sb_bp'][contains(text(),'{i}')]", 0).Click();
tab.WaitDownloading();
project.SendInfoToLog($"Пробуем xpath - //a[@class='b_widePag sb_bp'][contains(text(),'{i}')]", true); //вывод в лог
//ищем регулярку. Если нашли покинь цикл
regexGroups = Macros.TextProcessing.Regex(text, @project.Variables["domain"].Value + "[\\w\\W]*?", "0");
if (regexGroups.Count != 0)
{
project.Variables["checksource"].Value = regexGroups[0].FirstOrDefault();
project.SendInfoToLog($"нашли нужный xpath - //a[@class='b_widePag sb_bp'][contains(text(),'{i}')]", true); //вывод в лог
flag = true;
break;
}
}
if(!flag) throw new Exception("Ничего не нашли"); //выход по ошибке
}
Если нигде не накосячил (тестить лень было):
C#:Tab tab = instance.ActiveTab; // Текст для обработки string text = project.ExecuteMacro(instance.ActiveTab.GetSourceText("utf-8")); var errorIfEmpty = true; var regexGroups = Macros.TextProcessing.Regex(text, @project.Variables["domain"].Value + "[\\w\\W]*?", "0"); //если по регулярке ничего не нашли, идем на другие страницы bool flag = false; //флажок, чтобы отследить, нашли ли что-то if (regexGroups.Count == 0) { for(int i=2;i<11;i++) { //переходим на следующую стр tab.FindElementByXPath($"//a[@class='b_widePag sb_bp'][contains(text(),'{i}')]", 0).Click(); tab.WaitDownloading(); project.SendInfoToLog($"Пробуем xpath - //a[@class='b_widePag sb_bp'][contains(text(),'{i}')]", true); //вывод в лог //ищем регулярку. Если нашли покинь цикл regexGroups = Macros.TextProcessing.Regex(text, @project.Variables["domain"].Value + "[\\w\\W]*?", "0"); if (regexGroups.Count != 0) { project.Variables["checksource"].Value = regexGroups[0].FirstOrDefault(); project.SendInfoToLog($"нашли нужный xpath - //a[@class='b_widePag sb_bp'][contains(text(),'{i}')]", true); //вывод в лог flag = true; break; } } if(!flag) throw new Exception("Ничего не нашли"); //выход по ошибке }
прописал первой строкойПопробуй первой же строчкой вывести в лог любое сообщение. Если не выйдет то глюк
значит регулярка не находит ничего.прописал первой строкой
project.SendInfoToLog("тест", true); в логе отобразило корректно, не отображает именно 24 строку когда нашли переменную domain на странице.
Проект простой в переменной domain домен вида domain.com, заходим на страницу bing.com и вбиваем любой кей и выполняем код выше(для снятия позиций выдачи)
значит регулярка не находит ничего.
в лог выводи сколько нашлось и увидишь что почем
project.SendInfoToLog($"найдено {regexGroups.Count}", true);
}
Если нигде не накосячил (тестить лень было):
C#:Tab tab = instance.ActiveTab; // Текст для обработки string text = project.ExecuteMacro(instance.ActiveTab.GetSourceText("utf-8")); var errorIfEmpty = true; var regexGroups = Macros.TextProcessing.Regex(text, @project.Variables["domain"].Value + "[\\w\\W]*?", "0"); //если по регулярке ничего не нашли, идем на другие страницы bool flag = false; //флажок, чтобы отследить, нашли ли что-то if (regexGroups.Count == 0) { for(int i=2;i<11;i++) { //переходим на следующую стр tab.FindElementByXPath($"//a[@class='b_widePag sb_bp'][contains(text(),'{i}')]", 0).Click(); tab.WaitDownloading(); project.SendInfoToLog($"Пробуем xpath - //a[@class='b_widePag sb_bp'][contains(text(),'{i}')]", true); //вывод в лог //ищем регулярку. Если нашли покинь цикл regexGroups = Macros.TextProcessing.Regex(text, @project.Variables["domain"].Value + "[\\w\\W]*?", "0"); if (regexGroups.Count != 0) { project.Variables["checksource"].Value = regexGroups[0].FirstOrDefault(); project.SendInfoToLog($"нашли нужный xpath - //a[@class='b_widePag sb_bp'][contains(text(),'{i}')]", true); //вывод в лог flag = true; break; } } if(!flag) throw new Exception("Ничего не нашли"); //выход по ошибке }
Учи основы C#.Что то поломалось в коде, до этого все стабильно работало, не могу понять в чем дело
Tab tab = instance.ActiveTab;
instance.ActiveTab.Navigate("https://www.","");
instance.ActiveTab.WaitDownloading();
// Текст для обработки
string text = project.ExecuteMacro(instance.ActiveTab.DomText);
var errorIfEmpty = true;
var regexGroups = Macros.TextProcessing.Regex(text, @project.Variables["domain"].Value + "[\\w\\W]*?", "0");
project.SendInfoToLog("Проверяем наличие ссылки на странице", true);
var rnd = new Random();
//если по регулярке ничего не нашли, идем на другие страницы
bool flag = false; //флажок, чтобы отследить, нашли ли что-то
if (regexGroups.Count == 0)
{
for(int i=2;i<11;i++)
{
//переходим на следующую стр
//text = project.ExecuteMacro(instance.ActiveTab.GetSourceText("utf-8"));
var elButton = instance.ActiveTab.FindElementByXPath($"//a[@class='b_widePag sb_bp'][contains(text(),'{i}')]", 0); //Находим элемент кнопки
int topInBrowser = int.Parse(elButton.GetAttribute("topInBrowser")); //Определяем, на каком расстоянии от верха страницы находится кнопка
instance.ActiveTab.FullEmulationMouseWheel(0, topInBrowser); //Делаем прокрутку на это расстояние
instance.ActiveTab.FullEmulationMouseMoveToHtmlElement(elButton); //Ведём курсор мышки к кнопке
//instance.ActiveTab.FullEmulationMouseClick("left", "click"); //Кликаем
tab.FindElementByXPath($"//a[@class='b_widePag sb_bp'][contains(text(),'{i}')]", 0).Click();
instance.ActiveTab.WaitDownloading(); // Ожидание загрузки
System.Threading.Thread.Sleep(rnd.Next(1, 2) * 1000); // Пауза 2-3 сек
//tab.WaitDownloading();
project.SendInfoToLog($"Пробуем xpath - //a[@class='b_widePag sb_bp'][contains(text(),'{i}')]", true); //вывод в лог
//ищем регулярку. Если нашли покинь цикл
regexGroups = Macros.TextProcessing.Regex(text, @project.Variables["domain"].Value + "[\\w\\W]*?", "0");
if (regexGroups.Count != 0)
{
project.Variables["checksource"].Value = regexGroups[0].FirstOrDefault();
//project.SendInfoToLog($"нашли нужный xpath - //a[@class='b_widePag sb_bp'][contains(text(),'{i}')]", true); //вывод в лог
flag = true;
break;
}
}
if(!flag) throw new Exception("Ничего не нашли"); //выход по ошибке
}


