前面介绍了使用TestCafe时如何定位、操作页面元素以及校验执行结果,此次课程将介绍使用TestCafe时如何完成拖动页面元素、模拟鼠标键盘、文件上传下载等操作。在介绍Cypress和Puppeteer时也详细讲解过如何模拟这些操作,故此章节对于这些场景只会简单介绍并给出demo脚本。为了完成此次课程拆分了7个task,接下来将逐个进行简单介绍。
- 模拟拖动页面元素
- 模拟键盘和鼠标操作
- 操作iframe下的页面元素
- 操作shadow dom下页面元素
- 实现文件上传和下载
- 弹框处理
- 实现浏览器前进、后退以及模拟hover操作
拖动页面元素
Testcafe框架自身提供了拖动页面元素的api,调用t.dragToElement(fromElementSelector,targetSelector)即可,调用时传入拖动元素的开始位置和结束位置的页面元素selector即可。具体可看下面的案例脚本。同样,执行“npm run test:dragElement”即可运行下面的脚本。
import {Selector} from 'testcafe'
fixture('drag element demo');
test('should drag element successfully', async (t) => {
await t.navigateTo("http://devexpress.github.io/testcafe/example/");
await t.click('#tried-test-cafe');
const toAreaElement = Selector('.slider-container .slider-value').withText('5');
//定位拖动的目标位置元素
await t.dragToElement('.slider-container #slider span', toAreaElement);
//调用testcafe提供的拖动元素api完成拖动操作。
await t.wait(3000);
//此处添加等待命令,方便看到拖动的结果
});
模拟键盘或者鼠标操作
调用t.pressKey(keyname)即可模拟键盘输入操作,下面脚本写了几个常见键值输入,更多可输入的键值可查看官网资料“ Redirecting… ”。对于模拟鼠标操作,框架提供了click、doubleClick、rightClick、hover、dragToElement5个api完成常见的鼠标操作,这几个api使用方式非常简单,前面也分别做过介绍,这里不再重复说明。同样,执行“npm run test:keyBoard”即可运行下面的脚本。
fixture('simulate keyboard action');
test('should simulate keyboard action successfully', async (t) => {
await t.navigateTo('https://devexpress.github.io/testcafe/example/');
await t.typeText('#developer-name','test')