超详细的 web 自动化教程 (五)—TestCafe 页面高级操作

本贴最后更新于 1331 天前,其中的信息可能已经事过境迁

Web自动化神器TestCafe—页面高级操作

前言

在【Web自动化神器TestCafe—页面交互篇(上)】这篇文章中我们介绍了TestCafe页面交互的一些基本使用

这篇文章接着上一篇来给大家介绍一下TestCafe页面交互的一些高级操作。

一、鼠标拖拽

1、拖拽元素偏移

import { Selector } from 'testcafe';

fixture `元素拖拽`
    .page `https://www.runoob.com/try/try.php?filename=jqueryui-api-droppable`;

test('Drag test', async t => {
    await t
    	.switchToIframe('#iframeResult')
    	// 相对于元素原来位置,x轴拖动360像素
        .drag('#draggable', 360, 0);
});

2、拖拽元素到另一个元素位置

import { Selector } from 'testcafe';

fixture `元素拖拽`
    .page `https://www.runoob.com/try/try.php?filename=jqueryui-api-droppable`;

test('Drag test', async t => {
    await t
    	.switchToIframe('#iframeResult')
    	// 将元素#draggable 拖动到 #droppable 中
        .dragToElement('#draggable', '#droppable')
});

二、文件上传

1、上传文件

参数 描述
selector 目标元素(目标元素必须是带有type="file"属性的input标签。)
filePath 上传文件的路径(支持多个文件上传,以数组的形式传递参数)

2、清除上传文件

三、截屏操作

关于截图,testcafe提供了两个方法,一个的对整个页面进行截图,一个是对具体的某个元素进行截图。

1、页面进行截图

2、元素截图

四、窗口滚动

TestCafe对处于页面下方不可见的元素进行操作,会自动滚动到元素可见。因此TestCafe中没有提供专用来滚动窗口的操作方法。如果您特别需要在不对元素执行任何操作的情况下,滚动到页面元素可见,可以使用TestCafe提供的客户端功能构造函数ClientFunction,自己定义一个滚动的方法。

1、自定义滚动方法

自定义滚动的方法需要使用 TestCafe提供的构造函数ClientFunction来创建客户端函数。

关于ClientFunction,后面的章节会详细讲解,这边咱们直接使用

import { ClientFunction } from 'testcafe';

// 定义一个相对当前位置,进行滚动的方法 
const scrollBy = ClientFunction((x,y) => {
    window.scrollBy(x, y);
});

// 定义一个相对当前位置,滚动到页面指定像素位置的方法 
const scrollTo = ClientFunction((x,y) => {
    window.scrollTo(x, y);
});

fixture `My fixture`
    .page `https://www.layui.com/demo/upload.html`;

test('Test scrollBy', async t => {
   	 // 相对当前位置,向下滚动100像素
      await scrollBy(100,0);
});
test('Test scrollTo', async t => {
   	 //滚动到页面X轴为1000像素的位置
      await scrollTo(1000,0);
});

1

五、iframe切换

TestCafe测试的测试操作和selenium一样仅限于主窗口。如果页面中存在iframe内嵌页面,那么进行自动化测试的过程中,如果存在iframe,则应需要进行切换。

1、切换到指定的iframe中

testcafe中的方法switchToIframe,可以帮我们从主窗口切换到iframe中

2、从iframe中切换回页面窗口

1

六、页面访问

在前几节的学习中我们打开页面都是在 fixture 中,调用page方法。那么如果在测试用例中我们要跳转到另一个指定的页面,则需要使用TestCafe中的navigateTo方法

fixture('Example').page('https://www.baidu.com');

test('Navigate To URL test', async t => {
    await t.navigateTo('https://www.taobao.com');
});

七、窗口切换

TestCafe在打开新窗口时,会自动切换到新窗口,如果我们在测试的过程中需要手动进行窗口切换,

1、获取窗口描述符

获取当前活动窗口相对应的窗口描述符

2、切换到特定窗口

3、切换上一个活动窗口

切换到前一个活动的窗口, 使用该方法方法调用将在两个最近的窗口之间循环切换。

4、切换的父级窗口

4 操作
mslemonban 在 2021-04-29 16:03:24 更新了该帖
mslemonban 在 2021-02-24 21:59:57 更新了该帖
mslemonban 在 2021-02-24 21:55:39 更新了该帖
mslemonban 在 2021-02-24 21:52:27 更新了该帖
回帖
请输入回帖内容 ...