Помогите из кубиков сделать сниппет

backoff

Client
Регистрация
20.04.2015
Сообщения
6 052
Благодарностей
6 481
Баллы
113
короче говоря сделал чек прохождения страницы "This site can't be reached"

75767

логика
мы зашли на сайт, появился этот ричед, и клик выдал ошибку

1. кубик отлавливает текст "This site can't be reached" и если урл равен "about:blank"
2. проверка попыток
3. клик на релоуд
4. увеличиваем счетчик
5. надо бы сделать обнуление счетчика для нового поиска, если таковой появится снова

помогите запилить все в один кубик, так как в шабе много проверок таких, слишком много жрет места, и не красиво )
спасибо
 

Вложения

backoff

Client
Регистрация
20.04.2015
Сообщения
6 052
Благодарностей
6 481
Баллы
113
аа, и воткните плиз время ожидание 1сек перед кликом (между 2 и 3 действием), пригодится на будущее
 
  • Спасибо
Реакции: udder

backoff

Client
Регистрация
20.04.2015
Сообщения
6 052
Благодарностей
6 481
Баллы
113
Ребят, категорически советую это решение, прошло уже 5 часов с момента фикса, и работает идеально!
Запилите снип плиз, не сложно же
 
Регистрация
07.08.2019
Сообщения
76
Благодарностей
80
Баллы
18
C#:
for (int i = 0; i < 10; i++)
if ((instance.ActiveTab.URL != "about:blank") && (!instance.ActiveTab.DomText.Contains("This site can't be reached")))
{
    return "ok";
}
else
{
    instance.WaitFieldEmulationDelay();
    HtmlElement he = instance.ActiveTab.FindElementByXPath("//*[@id=\"reload-button\"]", 0);
    if (!he.IsVoid)
    {
        he.RiseEvent("click", instance.EmulationLevel);
        Thread.Sleep(1000);
        instance.WaitFieldEmulationDelay();
        he = instance.ActiveTab.FindElementByXPath("123", 0);
        if (!he.IsVoid)
        {
            he.RiseEvent("click", instance.EmulationLevel);
            return "ok";
        }
    }
}

return "ok";

Попробуй так
 

backoff

Client
Регистрация
20.04.2015
Сообщения
6 052
Благодарностей
6 481
Баллы
113
Походу я не достаточно понятно объяснил.
Надо в сниппет перенести левую часть, клик не надо пихать в сниппет, только проверка

только эти кубики
75781

и подпиши комментарии плиз в снипе, для новичков в этом
 
Регистрация
07.08.2019
Сообщения
76
Благодарностей
80
Баллы
18
Походу я не достаточно понятно объяснил.
Надо в сниппет перенести левую часть, клик не надо пихать в сниппет, только проверка

только эти кубики
Посмотреть вложение 75781

и подпиши комментарии плиз в снипе, для новичков в этом
А зачем клик выносить из сниппета? Тогда вообще от сниппета пользы нету. Потому что на каждой итерации цикла будет проверка на клик, который снаружи, и локальная переменная счетчик тоже снаружи... Вздор)
 

backoff

Client
Регистрация
20.04.2015
Сообщения
6 052
Благодарностей
6 481
Баллы
113
Регистрация
07.08.2019
Сообщения
76
Благодарностей
80
Баллы
18
Ну ты его под себя подредактируешь) Клик который справа был.

Ты же скинул проект. Я клик внес в сниппет, так как увидел что этот клик тоже отвечает за продолжение. (Кликнулось - продолжить, не кликнулось - продолжаем ловить кнопку).
 

backoff

Client
Регистрация
20.04.2015
Сообщения
6 052
Благодарностей
6 481
Баллы
113
ну и думаю стоит сделать, что Если все хорошо и страница прогрузилась, по зеленой выходим, если все попытки потрачены и не прогрузилась, то по красной

Ну ты его под себя подредактируешь)
ну я не особо шарю в шарпе, так что могу не шибко работоспособно подредактировать :-)
 
Регистрация
07.08.2019
Сообщения
76
Благодарностей
80
Баллы
18
ну и думаю стоит сделать, что Если все хорошо и страница прогрузилась, по зеленой выходим, если все попытки потрачены и не прогрузилась, то по красной


ну я не особо шарю в шарпе, так что могу не шибко работоспособно подредактировать :-)
Попробуй тогда этот код. То что ты просил. Если я правильно все понял (Без правого клика)
C#:
for (int i = 0; i < 10; i++)
if ((instance.ActiveTab.URL != "about:blank") && (!instance.ActiveTab.DomText.Contains("This site can't be reached")))
{
    return "ok";
}
else
{
    instance.WaitFieldEmulationDelay();
    HtmlElement he = instance.ActiveTab.FindElementByXPath("//*[@id=\"reload-button\"]", 0);
    if (!he.IsVoid)
    {
        he.RiseEvent("click", instance.EmulationLevel);
    }

    instance.WaitFieldEmulationDelay();
    Thread.Sleep(1000);
}

return "ok";

А вот код тоже без правого клика. Но этот код будет по красной выходить если не получилось нормально загрузить страницу после всех попыток
C#:
for (int i = 0; i < 10; i++)
if ((instance.ActiveTab.URL != "about:blank") && (!instance.ActiveTab.DomText.Contains("This site can't be reached")))
{
    return "ok";
}
else
{
    instance.WaitFieldEmulationDelay();
    HtmlElement he = instance.ActiveTab.FindElementByXPath("//*[@id=\"reload-button\"]", 0);
    if (!he.IsVoid)
    {
        he.RiseEvent("click", instance.EmulationLevel);
    }

    instance.WaitFieldEmulationDelay();
    Thread.Sleep(1000);
}

throw new Exception();

Последний код вроде то что нужно. Тестируй
 
  • Спасибо
Реакции: backoff

backoff

Client
Регистрация
20.04.2015
Сообщения
6 052
Благодарностей
6 481
Баллы
113
Да, вроде работает, сейчас буду тестить в бою.

Спасибо!
 

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