如何将 Selector 与我的 Utility 函数结合使用?
How do i combine Selector with my Utility function?
在使用 TestCafe 编写测试时,我正在创建 实用函数 ,但在使用 Selector('' ) 任何函数内的方法。
Selector('') 方法在测试文件中以及从另一个文件 (utility_selectors.js) 导入时都可以正常工作。我想我需要在函数中包含一些东西,但我卡住了,似乎找不到解决方案。
我的目标是为 select 鼠标点击坐标创建一个函数。
Utility_selectors.js
import { Selector } from 'testcafe';
export const viewport = Selector('.viewport').find('canvas');
Utility_functions.js
import * as s from './selectors.js';
export const selectPoint = (x,y) => {
return s.viewport + ",{ offsetX :" + x + ", offsetY :" + y + "}"
}
或(均无效)
export function selectPoint(x,y){
return s.viewport + ",{ offsetX :" + x + ", offsetY :" + y + "}"
}
Testfile.js(实际的效用函数)
import { selectPoint } from '../utilities/functions.js';
test('example utility function', async (t) => {
await t.click(selectPoint(100,200));
});
执行时cmd出现如下错误:
SyntaxError: Failed to execute 'querySelectorAll' on 'Document': 'function
__$$clientFunction$$() {
const testRun = builder._getTestRun();
const callsite = (0, _getCallsite.getCallsiteForMethod)(builder.callsiteNames.execution);
const args = [];
// OPTIMIZATION: don't leak `arguments` object.
for (let i = 0; i < arguments.length; i++) args.push(arguments[i]);
return builder._executeCommand(args, testRun, callsite);
},{ offsetX :100, offsetY :200}' is not a valid selector.
长话短说,我想在实用函数中包含 TestCafe 的 Selector('') 方法。
提前致谢!
您提供的代码将不起作用,因为您正在尝试将字符串连接到生成的函数。该字符串应该是作为第二个参数传递给点击函数的对象。
如果您总是使用同一个选择器,我可以想象您会想要创建一个像 clickPoint(t, 100,200)
.
这样的实用程序
这可以通过以下实用函数来实现。
import * as s from './selectors.js';
export const clickPoint = (t, x, y) => {
return t.click(s.viewport, { offsetX : x, offsetY: y });
};
您的测试文件将如下所示:
import { clickPoint } from '../utilities/functions.js';
test('example utility function', async (t) => {
await clickPoint(t, 100, 200);
});
编辑:如果其他人想使用我的代码,我已经使它更简洁了。
utility_functions_js
import { t } from 'testcafe';
export const clickPoint = (x, y) => {
return t.doubleClick(s.viewport, { offsetX : x, offsetY: y });
};
现在你可以写:
await clickPoint(x,y)
而不是
await clickPoint(t,x,y)
干杯:)
在使用 TestCafe 编写测试时,我正在创建 实用函数 ,但在使用 Selector('' ) 任何函数内的方法。
Selector('') 方法在测试文件中以及从另一个文件 (utility_selectors.js) 导入时都可以正常工作。我想我需要在函数中包含一些东西,但我卡住了,似乎找不到解决方案。
我的目标是为 select 鼠标点击坐标创建一个函数。
Utility_selectors.js
import { Selector } from 'testcafe';
export const viewport = Selector('.viewport').find('canvas');
Utility_functions.js
import * as s from './selectors.js';
export const selectPoint = (x,y) => {
return s.viewport + ",{ offsetX :" + x + ", offsetY :" + y + "}"
}
或(均无效)
export function selectPoint(x,y){
return s.viewport + ",{ offsetX :" + x + ", offsetY :" + y + "}"
}
Testfile.js(实际的效用函数)
import { selectPoint } from '../utilities/functions.js';
test('example utility function', async (t) => {
await t.click(selectPoint(100,200));
});
执行时cmd出现如下错误:
SyntaxError: Failed to execute 'querySelectorAll' on 'Document': 'function
__$$clientFunction$$() {
const testRun = builder._getTestRun();
const callsite = (0, _getCallsite.getCallsiteForMethod)(builder.callsiteNames.execution);
const args = [];
// OPTIMIZATION: don't leak `arguments` object.
for (let i = 0; i < arguments.length; i++) args.push(arguments[i]);
return builder._executeCommand(args, testRun, callsite);
},{ offsetX :100, offsetY :200}' is not a valid selector.
长话短说,我想在实用函数中包含 TestCafe 的 Selector('') 方法。
提前致谢!
您提供的代码将不起作用,因为您正在尝试将字符串连接到生成的函数。该字符串应该是作为第二个参数传递给点击函数的对象。
如果您总是使用同一个选择器,我可以想象您会想要创建一个像 clickPoint(t, 100,200)
.
这可以通过以下实用函数来实现。
import * as s from './selectors.js';
export const clickPoint = (t, x, y) => {
return t.click(s.viewport, { offsetX : x, offsetY: y });
};
您的测试文件将如下所示:
import { clickPoint } from '../utilities/functions.js';
test('example utility function', async (t) => {
await clickPoint(t, 100, 200);
});
编辑:如果其他人想使用我的代码,我已经使它更简洁了。
utility_functions_js
import { t } from 'testcafe';
export const clickPoint = (x, y) => {
return t.doubleClick(s.viewport, { offsetX : x, offsetY: y });
};
现在你可以写:
await clickPoint(x,y)
而不是
await clickPoint(t,x,y)
干杯:)