Бесконечный цикл проверки элемента на странице С#

idleSSS

Новичок
Регистрация
12.02.2019
Сообщения
28
Благодарностей
3
Баллы
3
Всем привет!

Задача: необходимо проверить элемент на странице и если он существует, кликнуть по нему. Если элемента нет, то обновить страницу, так как он появляется только при обновлении.

Ниже код, он находит элемент, но не кликает по нему, а просто обновляет страницу.
Я не могу понять как правильно построить этот цикл??

Код:
HtmlElement he6;
int f=0;
for(; ; )
{
    he6 = instance.ActiveTab.FindElementByXPath("//*[@id='dnn_ctr691_procDetail_sendRequest']", 0);
//    return he6.GetAttribute("href"); // Просто проверка нахождения атрибута элемента, для проверки нахождения элемента
    if(!he6.IsVoid) // если элемент найден
    {
     // Задержка эмуляции
    instance.WaitFieldEmulationDelay();
     // Вызвать событие "click"
// Кликаем по элементу
    he6.RiseEvent("click", instance.EmulationLevel);
// прерываем цикл
     break;   
    }
    return "кнопка -  не найдена, ждем 1 секунду";
    System.Threading.Thread.Sleep(1000);
// Обновляем страницу
    instance.ActiveTab.Navigate(project.Variables["URL_Podscha"].Value, ""); // переходим по ссылке из переменной
    if (instance.ActiveTab.IsBusy) instance.ActiveTab.WaitDownloading();
    f++;
}
 

idleSSS

Новичок
Регистрация
12.02.2019
Сообщения
28
Благодарностей
3
Баллы
3
Ребят, я тут обнаружил что при нажатии на эту кнопку (элемент) вручную перекидывает по ссылке на мгновение, а затем опять прогружается текущая страница. В обычном браузере такого нет, при нажатии на кнопку происходит переход на другую страницу. В чем может быть проблема?? Сегодня обновлял Зенку до 5.31.00, по верх старой. Может снести и снова поставить??
И конечно жду ответа по коду, все ли в порядке?? Там ли и правильно ли я указал int f=0; for(; ; ) и f++;
 

idleSSS

Новичок
Регистрация
12.02.2019
Сообщения
28
Благодарностей
3
Баллы
3
Конечно же никто не помог... Не в первый раз, нет ответа.
Проблема оказалась в том, что при нажатии кнопки (найденного элемента) сайт менял адрес на вот такой "https://app.сайт.ru".
А в самом начале настроек браузера, я указал белый список:
var domains = new []{ "www.сайт.ru" };
instance.SetContentPolicy("WhiteList", domains, null);

Поэтому при клике на кнопку ничего не происходило.


Код оказался рабочим, нужно было немного подкорректировать, может кому-то пригодится.

Код:
HtmlElement he6; // объявляем переменную элемента
int f=0; // объявляем переменную цикла
for(; ; ) // условие бесконечного цикла
{
// Ищем элемент на странице
    he6 = instance.ActiveTab.FindElementByXPath("//*[@id='dnn_ctr691_procDetail_sendRequest']", 0);
if(!he6.IsVoid) // если элемент найден
    {
     // Задержка эмуляции
     instance.WaitFieldEmulationDelay();
     // Вызвать событие "click"
     he6.RiseEvent("click", instance.EmulationLevel);
     break; // при успешном нахождении элемента и клике по нему прерываем бесконечный цикл.
   
    }
//   Если элемент не найден, пауза 1 сек.
    System.Threading.Thread.Sleep(1000);
// обновляем страницу    instance.ActiveTab.Navigate(project.Variables["URL_Podscha"].Value, ""); // переходим по ссылке из переменной
    if (instance.ActiveTab.IsBusy)
    instance.ActiveTab.WaitDownloading();
    f++; // увеличиваем счетчик на 1
    project.SendInfoToLog(" нужная кнопка не найдена", true);
}
 
  • Спасибо
Реакции: NICOLAS Christophe и izubr

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