本文介绍: Testcafe基于node.js框架,以操作简洁著称,是web自动化的神器今天主要给大家介绍一下testcafe这个框架和页面元素交互方法。,元素需满足以下条件:☟元素body 页面窗口iframe 窗口元素内。如果某个元素在视口之外,则 TestCafe 通过滚动可以滚动元素可见。元素是可见的,具有以下属性属性说明display没有设置nonevisibility设置visible默认值width> = 1 像素height> = 1 像素

前 言


Testcafe是基于node.js的框架,以操作简洁著称,是web自动化的神器

今天主要给大家介绍一下testcafe这个框架和页面元素交互方法

一、互动要求

使用 TestCafe 与元素进行交互操作,元素需满足以下条件:☟

元素在 body 页面窗口iframe 窗口的元素内。如果某个元素在视口之外,则 TestCafe 通过滚动可以滚动到元素可见。

元素是可见的,具有以下属性

属性

说明

display

没有设置none

visibility

设置visible默认值

width

> = 1 像素

height

> = 1 像素

元素不重叠

TestCafe 动作以某个动作 offsetX 或 offsetY 选项指定的元素的中心或点为目标。如果另一个元素遮挡了目标点,则在顶部元素上执行操作(例如,t.click 操作在其上方单击该元素)。
 

二、点击操作

关于对元素进行点击操作使用 testcafe 提供了三个方法,分别为单击双击鼠标右击,接下来我们一起来了解一下鼠标操作使用方法

1、单击

方法:t.click

指定元素位置鼠标单击

参数

参数

描述

selector

双击的页面元素

例子

test('click test', async t => {
    await t.click('#su');
});

2、双击

方法:t.doubleClick

指定元素位置鼠标双击元素

参数

参数

描述

selector

双击的页面元素

例子

test('doubleClic test', async t => {
    await t.doubleClick('#su')
});

3、右击

方法:t.rightClick

指定元素位置鼠标右击

参数:

参数

描述

selector

双击的页面元素

例子:

test('rightClick test', async t => {
    await t.rightClick('#cell-1-1')
});

三、输入操作

方法:t.typeText

输入单元素的值

参数:

参数

描述

selector

接收输入内容的表单元

text

输入的文本

例子:

import { Selector } from 'testcafe';


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


test('Type Text test', async t => {
    await t
      .typeText('#kw', '1')
})

四、键盘按键

测试的操作中,如果涉及到键盘按键的操作,那么 testcafe 中也提供了很方便的方法 pressKey。

方法:t.pressKey

按键类型

按键类型

例子

字母数字

a‘,’A’,’1’

修饰

shift‘,’alt‘ 、’ctrl‘,

导航键和动作

backspace‘,’tab‘,’enter’

按键组合

shift+a’, ‘ctrl+v

顺序按键

使用空格分隔多个案例操作,例如,’ctrl+c ctrl+v

例子:

test('enter test', async t => {
    // 按下 a 键
    await t.pressKey('a')
     // 按下 shift+a 键
    await t.pressKey('shift+a')
     // 先按下 ctrl+c复制,再按ctrl+v粘贴
    await t.pressKey('ctrl+c ctrl+v')
  
});

五、文本选择

关于表单或者 textarea 这类可编辑的元素,在进行输入之前,如果要选中原有的文字内容,并进行删除操作,则需要选择文本然后再进行删除
 

方法:t.selectText

在各种类型的输入元素中选择文本

参数:

参数

类型

描述

selector

字串| 选择器

标识将要选择其文本的网页元素;必填参数

startPos

number

选择的开始位置从零开始整数;非必填,默认为 0

endPos

number

选择的结束位置;非必填,可见文本内容长度

例子:

import { Selector } from 'testcafe';


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


test('Type Text test', async t => {
  // 输入 柠檬班
    await t.typeText('#kw', '1')
      // 选中输入的文本
      .selectText('#kw')
      // 按下删除删除输入的文本
        .pressKey('delete');
})

六、鼠标悬停

方法:t.hover

将鼠标指针悬停在页面的某个元素上。

参数:

参数

描述

selector

页面元素

例子:

import { Selector } from 'testcafe';


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


test('Type Text test', async t => {
  // 鼠标悬停在百度页面顶部的更多菜单await t.hover('a[name="tj_briicon"]')
});

七、强制等待

我们执行测试时,对于某个操作后,如果需要强制等待一段时间可以使用 t.wait 方法来进行强制等待

方法:t.wait

代码执行wait 方法,进行强制等待

参数:

范围

类型

描述

timeout

数字

暂停持续时间(以毫秒为单位)。

例子:

import { Selector } from 'testcafe';


fixture `百度测试`
    .page `https://www.baidu.com`;


test('Wait test', async t => {
    await t
      // 输入柠檬班
      .typeText('#kw', '2')
      // 强制等待3秒
        .wait(3000)
      // 点击搜索
      .click('#su')
  
});

八、窗口管理

1、打开新窗口

方法:openWindow

打开一个新的浏览器窗口。返回匹配的窗口描述符

参数:

参数

描述

url

打开的 URL。可以是绝对的或相对的。

例子:

import { Selector } from 'testcafe';


fixture `百度测试`
    .page `https://www.baidu.com`;


test('Wait test', async t => {
    // 打开一个新窗口,接收新窗口的描述符
    const winDesc = await t.openWindow('http://www.taobao.com')
});

2、关闭窗口

方法:closeWindow

关闭浏览器窗口。(注意点:不能使用该方法直接关闭主窗口)

参数:

参数

描述

windowDescriptor

描述目标窗口的对象。如果不传此参数,默认关闭当前活动窗口。

例子:

import { Selector } from 'testcafe';


fixture `百度测试`
    .page `https://www.baidu.com`;


test('Wait test', async t => {
  // 打开一个新窗口,接收新窗口的描述符
    const winDesc1 = await t.openWindow('http://www.taobao.com')
    // 关闭窗口
    await t.closeWindow(winDesc1)
});

九、调整窗口大小

1、窗口最大

方法:t.maximizeWindow

把浏览器窗口设置最大

例子:

import { Selector } from 'testcafe';


fixture `百度`
    .page `https://www.baidu.com`;


// 窗口最大化
test('screenshot ', async t => {
    await t.maximizeWindow();
});

2、调整窗口大小

方法:t.resizeWindow

参数:

参数名

描述

width

新的宽度(以像素为单位)。

height

新高度,以像素为单位。

例子:

  import { Selector } from 'testcafe';


const menu = Selector('#side-menu');


fixture `百度测试`
    .page `https://www.baidu.com`;


test('设置浏览器窗口大小', async t => {
    await t
        .resizeWindow(200, 100)
});

3、调整窗口大小适配设备屏幕

方法:t.resizeWindowToFitDevice

通过传入移动设备设备名,自动调整窗口大小,以适合指定移动设备屏幕

参数:

参数

描述

deviceName

设备名称比如 iphonex, iphonexr

例子:

import { Selector } from 'testcafe';


const menu = Selector('#side-menu');


fixture `百度测试`
    .page `https://www.baidu.com`;


test('设置浏览器窗口大小', async t => {
    await t
        .resizeWindowToFitDevice('iphonex', {
            portraitOrientation: true
        })
});

看到这里的朋友不妨点个赞,码字不易,谢谢大家

原文地址:https://blog.csdn.net/a448335587/article/details/134539297

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

如若转载,请注明出处:http://www.7code.cn/show_11159.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注