Я использую Testcafe для тестирования веб-сайта, который использует плагин jquery Chosen, и я хочу сделать утверждение в моем тестовом коде в зависимости от значения, возвращаемого внешней вспомогательной функцией (getSelectedOption).
Эта функция получает выбранный селектор в качестве параметра и должна возвращать выбранное значение в утверждение, но функция всегда возвращает первый элемент списка вместо выбранного.
Когда я использую код функции в своем тесте, все работает нормально. Кажется, что функция не имеет фактического состояния данных HTML и не видит, что элемент уже выбран.
Это фрагмент тестового кода:
await t
.click(await getOptionByText('salutation', 'Frau'))
.expect(await getSelectedOption('gender')).eql('weiblich')
Это фрагмент из внешних функций:
export const getChosenSelectorFromName = selectName => `#${selectName}_chosen`;
export const getSelectedOption = async selectName => {
const selectedOptionText = await
Selector(getChosenSelectorFromName(selectName))
.find('.chosen-single')
.innerText;
return selectedOptionText.toLowerCase().trim()
};
export const getOptionByText = async (selectName, optionText) => {
const chosenSelectorString = getChosenSelectorFromName(selectName);
await t.click(Selector(chosenSelectorString));
return await Selector(chosenSelectorString)
.find('.chosen-drop')
.find('li')
.withText(optionText);
};
Когда я использую в своем тесте аналогичный код, например функцию getSelectedOption, все работает нормально:
const genderSelect = Selector('#gender_chosen);
.click(await getOptionByText('salutation', 'Frau'))
.expect(genderSelect.innerText).eql('WEIBLICH')
getChosedSelectorFromName
. Вам необходимо передать эту функцию как зависимость от вашей ClientFunction. Взгляните на следующий пример: devexpress.github.io/testcafe/documentation/test-api/ 13.05.2019