我如何 use/print TestCafe 中通用属性中的值

How do i use/print the value inside a generic attribute in TestCafe

我想要做的是 print/use Polyline 属性的值。

<Polyline points="x,y x,y x,y x,y">

我试过用这些方法得到它们:

这是一个实用函数

export const getPointAttribute = async () => {
  const polyline = s.polyline;
  const polylineData = ClientFunction(() => polyline().attributes, {
    dependencies: { polyline }
  });
  return polylineData 
}

这是在测试脚本里面

test('', async (t) => {
   console.log(u.getPointAttribute())
}

test('', async (t) => {
   console.log(s.polyline.getAttribute('points'));
}

并且我包括我的外部选择器

import * as s from '../utilities/selectors';

但我得到的只是控制台日志中输出的承诺

Promise { }

ReExecutablePromise { _then: [], _fn: [Function], _taskPromise: null }

感谢任何帮助!

您的 getPointAttribute 函数 returns polylineData 对象是 ClientFunction type 的一个实例(反过来,它基于 Promises)。这就是为什么当您登录 u.getPointAttribute() 时,您会收到这些消息。您需要做的就是在调用 ClientFunction 之前使用 await 关键字。请看下面的代码:

const polylineData = ClientFunction(() => polyline().attributes, {
    dependencies: { polyline }
});
await polylineData();

参考以下文章获取更多信息https://devexpress.github.io/testcafe/documentation/test-api/obtaining-data-from-the-client/

我还想提一下,您不需要在 getPointAttribute 函数中使用 async

您应该在 console.log:

中等待呼叫
test('', async (t) => {
   console.log(await s.polyline.getAttribute('points'));
}

test('', async (t) => {
   console.log(await s.polyline.getAttribute('points'));
}

我已经设法让它与一个实用函数一起工作,供感兴趣的人使用。

export function getPoints(object: Selector) : Promise<string> {
  return object.getAttribute('points');
}

这样可以更轻松、更清晰地处理数据。

import * as u from '../utilities/functions';
import * as s from '../utilities/selectors';
console.log(await u.getPoints( s.polyline ));

感谢大家的帮助!