我如何在TestCafe中的通用属性内使用/打印值

时间:2019-01-24 12:52:39

标签: javascript reactjs testing e2e-testing testcafe

我要做的是打印/使用Polyline属性的值。

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

我尝试使用以下方法获取它们:

这是一个util函数

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';

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

  

承诺{}

  

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

感谢您的帮助!

3 个答案:

答案 0 :(得分:4)

您的<div class="col-xs-4 col-sm-4 col-md-4 select-me show_me del_nxt" style="display: block;"> <select class="prime" name="primary" id="primary" onchange="newsecondary(this)"> <option value="none" id="1200">---Select main---</option> <optgroup label="dummy1"> <option value="abc-2-1">abc</option> <option value="xyz-2-1">xyz</option> </optgroup> <optgroup label="Dummy2"> <option value="abc1-2-1">abc1</option> <option value="C1-2-1">C1</option> <option value="D1-2-1">D1</option> </optgroup> </select> <span class="Error"></span> </div> 函数返回getPointAttribute对象,该对象是polylineData类型(其又基于Promises)的实例。这就是为什么当您登录ClientFunction时会收到这些消息。您需要做的就是在调用ClientFunction之前使用u.getPointAttribute()关键字。请参见以下代码:

await

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

我还要提及的是,您无需在const polylineData = ClientFunction(() => polyline().attributes, {     dependencies: { polyline } }); await polylineData(); 函数中使用async

答案 1 :(得分:4)

您应该等待console.log内部的呼叫:

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

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

答案 2 :(得分:1)

我设法使它与有兴趣的人一起使用实用程序功能。

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 ));

感谢帮助人员!