如何解决如何在 Testcafe 中只拖不放
所以我有一个场景,当我将一个元素拖到另一个元素时,我想捕获一个弹出元素消息。
public async dragTransitiontToSegment(item: number,transitionName: string) {
const _tailSegment = Selector('.rolling').nth(item);
const _transitionPanel = Selector('.effects-selector.editor-panel .item-container')
const _transitionType = _transitionPanel.withText(transitionName);
await t.click(_transitionPanel);
await t.dragtoElement(_transitionType,_tailSegment,{speed:0.01});
}
现在我已经改变了拖动的速度,但捕获我想要的消息仍然太快,因为 dragtoElement 功能会放下它。有没有办法拖住它?
解决方法
目前,TestCafe 不允许您直接拖拽而不开箱即用。您可以模拟事件序列(mousedown、mousemove 或 HTML5 拖动事件)
import { Selector,ClientFunction } from 'testcafe';
function triggerMouseEvent (selector,type,options) {
const dispatchFunc = ClientFunction((type,options = {}) => {
options.bubbles = true;
options.cancelable = true;
options.view = window;
const event = new MouseEvent(type,options);
const targetElement = elementSelector();
targetElement.dispatchEvent(event);
},{ dependencies: { elementSelector: selector } });
return dispatchFunc(type,options);
}
fixture`Fixture`
.page`http://devexpress.github.io/testcafe/example`;
test('Test',async t => {
await t.click('#tried-test-cafe');
const slider = Selector('span.ui-slider-handle.ui-corner-all');
await triggerMouseEvent(slider,'mousedown');
await t.wait(1000);
const offsetLeft = await Selector('.slider-value').withText('5').offsetLeft;
await triggerMouseEvent(slider,'mousemove',{ clientX: offsetLeft });
await t.wait(1000);
await t
.expect(slider.offsetLeft).gte(352)
.expect(slider.offsetLeft).lte(353);
});
此外,TestCafe 1.15 将包含 t.dispatchEvent 方法,该方法允许您使用 TestController 触发事件。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。