Что ж, если вы хотите сохранить свою тестовую структуру как есть ( довольно подозрительно! ), то почему бы вам не объявить некоторые глобальные переменные тестового файла?
let numb, numb1;
browser
.waitForElementVisible("//div[@class='col-xs-7 alignR uppercase']//strong", 5000, function () {
browser.pause(500)
.getText("//div[@class='col-xs-7 alignR uppercase']//strong", function(result) {
numb1 = result.value;
// > do more stuff here if necessary <
});
})
.element('xpath', "(//div[@class='row']//div[@class='col-xs-7 alignR'])[1]", function (present) {
console.log(present);
if (present.status == 0) {
browser.pause(500)
.getText("(//div[@class='row']//div[@class='col-xs-7 alignR'])[1]", function (result) {
numb = result.value;
console.log(`numb & numb1 values: ${numb} & ${numb1}`);
// > do more stuff with num & numb1 if necessary <
});
}
});
При этом ... более точный подход состоит в том, чтобы разбить ваши большие шаги и извлечь логику в одноцелевые функции, так что вы можете использовать:
Учитывая текущую настройку, давайте рассмотримдобавив следующую пользовательскую команду для извлечения num1
:
❒ getNumb1.js (должен находиться в test/custom_commands/
):
exports.command = function(callback) {
this.perform((done) => {
this.api.waitForElementVisible("//div[@class='col-xs-7 alignR uppercase']//strong", 5000, () => {
this.api.pause(500);
this.api.getText("//div[@class='col-xs-7 alignR uppercase']//strong", (result) => {
let numb1 = result.value;
// > do some other stuff here if necessary <
callback(numb1);
});
});
});
};
Аналогичным образом добавьте второй файл пользовательских команд ( getNumb.js ), который будет возвращать значение numb
. Затем , используйте два в вашем тестовом файле и выполните манипулирование данными или проверку данных (утверждения) , как вам угодно:
let numb = browser.getNumb();
let numb1 = browser.getNumb1();
// > do something with numb & numb1 here <
❖ ! Примечание: Приведенные выше примеры являются чисто дидактическими! Я не советую создавать custom_commands
, содержащую тестовую логику.Только универсальные и / или служебные методы (например: closeGDPR , addCookie , getHttpCode и т. Д.) должен находиться в папке custom_commands
.
Таким образом, в текущей настройке было бы лучше, если бы вы добавили такие команды, как getNumb
& getNumb1
в разделе команд вашего объекта страницы.