从 span 中抓取文本,然后使用 CodeceptJS 进行比较

Grab text from span and then compare it using 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'),但我不明白如何重用它。如何在 codeceptjs 中查看 I.grabValueFrom 函数 returns 的值?

您可以使用生成器函数通过 'yield' 从函数中 return 值,如下所示:

Scenario('Yield', function* (I) {
  let value = yield I.grabValueFrom(some_xpath_to_value);


  let assert = require('assert');
  assert.equal(value, '777');
});

Codeceptjs 中的所有函数 return 承诺,而不是值。 因此,要从 I.grab... 函数中获取价值,您应该获得 Promise 结果。

您可以将 Garret 解决方案与 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`);
});