Проблема в сценарии JSR223. JSR223 Sampler:javax.script.ScriptException: groovy.lang.MissingMethodException: нет подписи метода:

У меня есть скрипт encrypt.js, который используется для шифрования и расшифровки пароля, введенного пользователем. Он встроен в веб-страницу приложения.

Я пытаюсь загрузить тот же скрипт в jmeter, используя этот код

load ('/apache-jmeter-5.6.3/scripts/encrypt.js');

при запуске я получил эту ошибку.

2024-02-27 09:55:47,729 ОШИБКА o.a.j.p.j.s.JSR223Sampler: проблема в сценарии JSR223 JSR223 Sampler, сообщение: javax.script.ScriptException: groovy.lang.MissingMethodException: нет подписи метода: org.codehaus.groovy.jsr223.GroovyScriptEngineIm пл. load() применим для типов аргументов: (строковые) значения: [/apache-jmeter-5.6.3/scripts/encrypt.js]

В языке я использовал groovy, так как в выпадающем списке нет javascript. Как я могу успешно импортировать JavaScript в Jmeter?

сэмплер jmeter jsr223

Попытка загрузить и зашифровать js, предоставленный разработчиком, для успешного входа в приложение.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
171
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если вы пытаетесь использовать функцию Global.load() из Mozilla Rhino для загрузки внешнего файла JavaScript - вы не сможете сделать это с помощью языка Groovy. Вам нужно будет переключиться на javascript

Например, если ваш файл «encrypt.js» имеет следующую функцию:

function myFunction(name) {
  return 'Hello, ' + name + '!'
}

вы можете загрузить его и вызвать в JMeter следующим образом:

Однако имейте в виду, что использование JavaScript:

  1. В целом не рекомендуется, поскольку движок Nashorn был удален из JDK15, и у вас возникнут проблемы с запуском теста на более новых версиях Java.
  2. Это своего рода антишаблон производительности. начиная с JMeter 3.1 вы должны использовать язык Groovy для написания сценариев, особенно для криптографических операций, поэтому я бы предпочел реализовать вашу логику шифрования в Groovy, а не пытаться вызывать JavaScript из Java. См. Apache Groovy: для чего используется Groovy? и Шифрование и дешифрование с помощью Groovy для более подробной информации.

попробовал использовать код отсюда groovy.apache.org/blog/encryption-and-decryption-with-groovy, но получил много ошибок.

Nelza 27.02.2024 09:43

вот какие ошибки я получил 2024-02-27 16:30:35,572 ИНФО o.a.j.m.J.JSR223 Предварительное маскирование пароля - Groovy: Это пароль пользователя: a2 Password_1 2024-02-27 16:30:35,572 ИНФОРМАЦИЯ o.a.j.m.J.JSR223 Предварительное маскирование пароля - Groovy: это замаскированный пароль пользователя: a2 ********** 2024-02-27 16:30:35,572 INFO o.a.j.m.J.JSR223 Предварительное маскирование пароля - Groovy: это ключ шифрования пользователя: a3 60EDW2WQ47CK8VB2KDL5TF7Q7EEYNO95 2024- 02-27 16:30:35,588 ОШИБКА o.a.j.m.JSR223PreProcessor: проблема в сценарии JSR223, предварительное шифрование пароля JSR223 javax.script.ScriptException:

Nelza 27.02.2024 09:47

javax.script.ScriptException: org.codehaus.groovy.control.MultipleCompilationErrorsExcepti‌​on: сбой при запуске: Script18.groovy: 31: невозможно разрешить класс Cipher @ строка 31, столбец 33. def randomParameterSpec(Closure<Cipher> Factory) { Script18 .groovy: 34: невозможно разрешить класс IvParameterSpec @ строка 34, столбец 5. новый IvParameterSpec(блок) Script18.groovy: 37: невозможно разрешить класс Key @ строка 37, столбец 27. def encrypt(byte[] байты, ключ ключа , спецификация IvParameterSpec, фабрика Closure<Cipher>)

Nelza 27.02.2024 09:50

Вам необходимо добавить необходимые операторы импорта , такие как import javax.crypto.Cipher, import javax.crypto.spec.IvParameterSpec и т. д., в начало вашего скрипта. Также ознакомьтесь со статьей 8 лучших классов Java JMeter, которые следует использовать с Groovy , чтобы узнать больше об объектах, специфичных для JMeter, которые вы можете использовать в своих сценариях для доступа, например, к переменным JMeter или записи записей в файл jmeter.log.

Ivan G 27.02.2024 09:58

понимаю... как я узнаю, какие операторы импорта или пакеты мне нужно добавить в код? Я действительно новичок в этом языке..

Nelza 28.02.2024 03:54

Получение этой ошибки сейчас 2024-02-29 09:00:02,105 ОШИБКА o.a.j.p.j.s.JSR223Sampler: проблема в сценарии JSR223. JSR223 Sampler - шифрование пароля, сообщение: javax.script.ScriptException: groovy.lang.MissingPropertyException: нет такого свойства: ENCRYPT_MODE для класса: Script1 javax.script.ScriptException: groovy.lang.MissingPropertyException: такого свойства: ENCRYPT_MODE для класса: Script1 нет. Я включил следующие классы: импорт javax.crypto.Cipher, импорт javax.crypto.spec.IvParameterSpec, импорт javax.crypto.KeyGenerator, импорт java.security.Key import java.security.SecureRandom

Nelza 29.02.2024 02:10

Другие вопросы по теме