Захватите текст из span, а затем сравните его с помощью CodeceptJS
У меня есть это в источнике на одной странице:
<span class="price-length price-length--4">666</span>
И у меня есть это в источнике на другой странице
<span class="price-length price-length--7">777</span>
Я хочу получить это значение 666, сохранить его где-нибудь и сравнить с 777. Как это сделать с помощью codeceptjs?
Я старался I.grabValueFrom('some_xpath_to_value')
, но я не понимаю, как его использовать. Как увидеть значение, которое I.grabValueFrom
функция возвращает в codeceptjs?
3 ответа
Вы можете использовать функцию генератора для возврата значений через "yield" из таких функций:
Scenario('Yield', function* (I) {
let value = yield I.grabValueFrom(some_xpath_to_value);
let assert = require('assert');
assert.equal(value, '777');
});
Все функции в Codeceptjs возвращают Promises, а не значения. Таким образом, чтобы получить значение от I.grab...
функции, вы должны получить результат Promise.
Вы можете использовать решение Гаррет с yield
, Или то же самое, но с async
/await
(требуется для Codecept Node.js 8.9.1 async
/await
служба поддержки)
const assert = require('assert');
Scenario('async', async function(I) {
let value = await I.grabValueFrom(some_xpath_to_value);
assert.equal(value, '777');
});
Используйте консоль, чтобы проверить метод захвата:
import assert from "assert";
Scenario("Example", async ({ I }) => {
const firstValue = await I.grabValueFrom("some_xpath_to_value");
console.log(firstValue);
const secondValue = await I.grabValueFrom("some_xpath_to_value");
console.log(secondValue);
assert.ok(firstValue == secondValue, `Values don't match`);
});