Захватите текст из 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`);
});
Другие вопросы по тегам