Это возможно, но только если пользователь нажимает гиперссылку на странице. Если пользователь использует браузер для перехода от страницы, он получит диалоговое окно браузера по умолчанию, в котором нет возможности сохранить.
Dirty Forms автоматически присоединяет (и удаляет обработчик) beforeunload
, поэтому ваша попытка создать другой обработчик событий, безусловно, потерпит неудачу. Вы никогда не должны делать этого при использовании Dirty Forms.
Вы не указали, какую модальную структуру диалога вы хотели использовать, поэтому я просто покажу пример с использованием диалогового окна JQuery UI. Интеграция других диалоговых фреймворков аналогична. Для этого вы можете проверить исходный код существующих предварительно построенных диалогов .
Кроме того, ваш случай использования немного кратковременен. Что делать, если пользователь хочет уйти и игнорировать изменения? Я добавил пример, который включает в себя дополнительную возможность сделать именно это.
Change one of the fields below, then click "Go to Google" to try to navigate away.
Go to Google
В примере используется привязка пользовательских событий для присоединения к обработчику событий onRefireClick
, который если choice.proceed = true
, но не когда false
.
Вы можете использовать конфигурацию набора данных CSV. Этот элемент управления позволит вам использовать внешний источник переменных. Добавить -> Элемент конфигурации -> Конфигурация набора данных CSV Вы должны установить имена переменных, например: Имена переменных (разделенные запятыми): USERNAME, PASSWORD
Затем вы можете использовать переменные в параметрах HTTP-запросов, например : $ {USERNAME} и $ {PASSWORD}
сохраните файл csv и план тестирования (i.s jmx) в одной и той же папке и перепроверьте имя переменной в конфигурации набора данных CSV в запросе http на наличие ошибок ввода.
Я понимаю, что этому вопросу больше года, но я только столкнулся с той же проблемой и подумал, что добавлю свое решение для всех, кто сталкивается с этой проблемой.
Если у вас есть последовательность имен пользователей и паролей, которые просто дифференцируются по номерам в конце их значений, вы можете использовать переменную __threadNum для их входа в систему. Поэтому для значения имени пользователя вы можете сказать user $ {__ threadNum} .
Это решение проще, чем включение CSV, но работает только тогда, когда у вас есть список, такой как тот, который вы предложили в своем вопросе.
Я только что реализовал это, используя jmeter для приложения, которое использует Spring Security (это было бы очень похоже на PHP). Это довольно просто:
1) Создайте новый CSV-файл с помощью текстового редактора. Например: CSVSample_user.csv
username1, password1
username2, password2
2) В jmeter создайте элемент конфигурации набора данных CSV
Thread Group>add>Config Element>CSV Data Set Config
=> Assign variable names (see image)
3) Создать элемент HTTP-запроса
Thread Group>add>Sampler>HTTP Request
=> Create a POST with parameters, have the variable you created
put the values for the parameter. (See bottom image).
ПРИМЕЧАНИЕ. Есть и другие необходимые элементы, например менеджер файлов cookie и т. д. Кроме того, количество потоков должно быть установлено на количество пользователей, вошедших в систему.