Задать вопрос
Пользователь пока ничего не рассказал о себе

Наибольший вклад в теги

Все теги (17)

Лучшие ответы пользователя

Все ответы (4)
  • Почему в функции MYSQL при присвоении в переменную значения из таблицы не учитывается условие WHERE?

    @Uncleruc1
    Проблема заключается в том, что в вашей функции условие WHERE \orderid` = 871жестко зафиксировано, и оно всегда будет брать строку с этимorderid, игнорируя переданное значение orderid` в параметр функции.

    Чтобы учитывать переданное значение в параметр функции, необходимо использовать сам параметр orderid вместо фиксированного значения. Вот исправленный код функции:
    DROP FUNCTION IF EXISTS YourFunction;
    DELIMITER $$
    CREATE FUNCTION YourFunction (qty INT, orderid INT) RETURNS TEXT
    
    BEGIN
    DECLARE text_t TEXT;
    SELECT `sum` INTO text_t FROM t_order_price_type WHERE `orderid` = orderid LIMIT 1;
    RETURN text_t;
    END$$
    
    DELIMITER ;


    Однако, в данном виде WHERE \orderid` = orderid` не сработает так, как вы ожидаете, потому что MySQL может спутать поле таблицы с параметром функции. Чтобы избежать этой путаницы, лучше использовать псевдонимы или уникальные имена для параметров. Например:
    DROP FUNCTION IF EXISTS YourFunction;
    DELIMITER $$
    CREATE FUNCTION YourFunction (p_qty INT, p_orderid INT) RETURNS TEXT
    
    BEGIN
    DECLARE text_t TEXT;
    SELECT `sum` INTO text_t FROM t_order_price_type WHERE `orderid` = p_orderid LIMIT 1;
    RETURN text_t;
    END$$
    
    DELIMITER ;

    Здесь параметр функции называется p_orderid, что предотвращает конфликт имен между полем таблицы и параметром функции.
    Ответ написан
    2 комментария
  • Как в webview2 Заполнить поле типа file?

    @Uncleruc1
    В WebView2 есть несколько способов автоматизировать заполнение полей типа file, но основное ограничение связано с безопасностью браузера, так как доступ к файловым полям строго ограничен и браузеры не позволяют напрямую задавать значения для этих полей через JavaScript. Ваш текущий подход с использованием SendKeys имитирует пользовательский ввод, что позволяет обходить это ограничение, но действительно может быть медленным при большом количестве полей.

    Вот несколько возможных альтернатив для ускорения процесса:

    Пакетная обработка файлов: Вместо того, чтобы обрабатывать каждое поле по одному, можно попытаться сгенерировать команды для всех полей и запустить их параллельно. Например, можно использовать параллельные задачи для вызова метода PopulateInputFile_poster сразу для нескольких полей:
    async Task PopulateMultipleFiles(Dictionary<string, string> fileMappings)
    {
        var tasks = fileMappings.Select(async kvp =>
        {
            var fileId = kvp.Key;
            var filePath = kvp.Value;
            ExecuteScript($"document.getElementById(\"{fileId}\").focus();");
    
            var sendKeyTask = Task.Delay(1000).ContinueWith((_) =>
            {
                SendKeys.Send(filePath + "{ENTER}");
            }, TaskScheduler.FromCurrentSynchronizationContext());
    
            ExecuteScript($"document.getElementById(\"{fileId}\").click();");
    
            await sendKeyTask;
            await Task.Delay(1000);
        });
    
        await Task.WhenAll(tasks);
    }
    
    var fileMappings = new Dictionary<string, string>
    {
        { "fln1", "poster.webp" },
        { "fln2", "image2.jpg" },
        // Добавьте остальные файлы
    };
    
    await PopulateMultipleFiles(fileMappings);

    WebDriver / Selenium: Хотя WebView2 более легкий и быстрый, использование Selenium с WebDriver может предоставить более гибкие возможности автоматизации, в том числе возможность работы с множеством полей через драйвер:
    IWebDriver driver = new EdgeDriver();
    IWebElement fileInput = driver.FindElement(By.Id("fln1"));
    fileInput.SendKeys("C:\\path\\to\\poster.webp");

    Это может быть быстрее для массового заполнения полей.

    Использование JavaScript и локальных API: Если у вас есть контроль над страницей, можно разработать API для загрузки файлов через JavaScript, но это требует модификации самой страницы, что не всегда возможно.

    Оптимизация задержек: Поиграйте с настройками задержек в вашем коде. Возможно, в некоторых случаях не нужно ждать целую секунду между шагами.

    Если у вас есть возможность контролировать или изменять целевые страницы, другие подходы могут включать в себя создание вспомогательных API для загрузки файлов напрямую.
    Ответ написан
    Комментировать