Проблемы с Метамаском

Maxxxxxx

Client
Регистрация
12.11.2024
Сообщения
3
Реакции
0
Баллы
1
Подскажите как исправить шаблон, при подписании транзакции в Метамаске кнопка "Confirm" часто бывает не активная но скрипт нажимает на кнопку и идет дальше, при етом транзакция конечно не подписываеться(
Как можно правильно прописать подпись транзакции?
 

Вложения

  • зображення_2024-12-25_224006850.png
    зображення_2024-12-25_224006850.png
    3,5 KB · Просмотры: 6
  • photo_2024-12-25_22-39-55.jpg
    photo_2024-12-25_22-39-55.jpg
    6,4 KB · Просмотры: 6
Составь правильный xpath что бы не кликал по неактивной кнопке.
 
  • Спасибо
Реакции: Maxxxxxx
Как вариант - через костыль, создать два кубика нажатия и при успешном - перескакивать на второй. И далее, пока "нажимается". А при неуспешном нажатии, значит, кнопка недоступна, скорее всего, транзакция была отправлена, тогда уже делаем переход к нужному дальнейшему действию.
 
Подскажите как исправить шаблон, при подписании транзакции в Метамаске кнопка "Confirm" часто бывает не активная но скрипт нажимает на кнопку и идет дальше, при етом транзакция конечно не подписываеться(
Как можно правильно прописать подпись транзакции?

C#:
Развернуть Свернуть Копировать
int timeoutSeconds = 5; // Время ожидания изменений домена
int maxAttempts = 3; // Максимальное количество попыток нажать кнопку
int sleepMilliseconds = 3; // Задержка между проверками
DateTime domainChangeTime = DateTime.MinValue;
int attempts = 3; // Счетчик попыток

while (true)
{
    // Проверяем домен
    if (instance.ActiveTab.Domain != "mcohilncbfahbmgdjkbpemcciiolgcge")
    {
        if (domainChangeTime == DateTime.MinValue)
        {
            domainChangeTime = DateTime.Now;
        }
        else if ((DateTime.Now - domainChangeTime).TotalSeconds >= timeoutSeconds)
        {
            // Домен отличался в течение timeoutSeconds секунд, задача выполнена
            break; // Выходим из цикла
        }
    }
    else
    {
        domainChangeTime = DateTime.MinValue; // Сбрасываем время изменения домена
    }

    // Ищем кнопку
    HtmlElement he = instance.ActiveTab.GetDocumentByAddress("0")
        .FindElementByXPath("//span[contains([USER=46442]@class[/USER], 'btn-content')]//div[text()='Confirm']", 0);

    if (!he.IsVoid)
    {
        // Кнопка найдена, нажимаем
        instance.WaitFieldEmulationDelay();
        he.RiseEvent("click", instance.EmulationLevel);

        // Ждем 5 секунд
        System.Threading.Thread.Sleep(5000);

        // Проверяем кнопку после нажатия
        he = instance.ActiveTab.GetDocumentByAddress("0")

            .FindElementByXPath("//span[contains([USER=46442]@class[/USER], 'btn-content')]//div[text()='Confirm']", 0);

        if (he.IsVoid)
        {
            // Кнопки нет, проверяем домен
            if (instance.ActiveTab.Domain != "mcohilncbfahbmgdjkbpemcciiolgcge")
            {
                // Домен изменился, задача выполнена
                break;
            }
        }
        else
        {
            // Кнопка осталась, увеличиваем счетчик попыток
            attempts++;
            if (attempts >= maxAttempts)
            {
                // Превышено максимальное количество попыток
                break;
            }
        }
    }

    // Небольшая задержка перед повторной проверкой
    System.Threading.Thread.Sleep(sleepMilliseconds);
}


Сделано для окекс, переделай под метамаск
 
Последнее редактирование модератором:
  • Спасибо
Реакции: Maxxxxxx
Последнее редактирование:
  • Спасибо
Реакции: Maxxxxxx и Hanger

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