一文读懂:testcafe框架和页面元素交互

一、互动要求  

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

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

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

属性说明
display没有设置为 none
visibility设置为 visible(默认值)
width> = 1 像素
height> = 1 像素

元素不重叠。

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

如果你想学习自动化测试,我这边给你推荐一套视频,这个视频可以说是B站播放全网第一的自动化测试教程,同时在线人数到达1000人,并且还有笔记可以领取及各路大神技术交流:798478386   

【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)_哔哩哔哩_bilibili【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)共计200条视频,包括:1、接口自动化之为什么要做接口自动化、2、接口自动化之request全局观、3、接口自动化之接口实战等,UP主更多精彩视频,请关注UP账号。icon-default.png?t=N7T8https://www.bilibili.com/video/BV17p4y1B77x/?spm_id_from=333.337.search-card.all.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', '123')
})

四、键盘按键  

在测试的操作中,如果涉及到键盘按键的操作,那么 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字串| 选择器标识将要选择其文本的网页元素;必填参数
startPosnumber选择的开始位置,从零开始的整数;非必填,默认为 0
endPosnumber选择的结束位置;非必填,可见文本内容的长度。
例子:
import { Selector } from 'testcafe';fixture('Example').page('https://www.baidu.com');test('Type Text test', async t => {// 输入 123await t.typeText('#kw', '123')// 选中输入的文本.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// 输入123.typeText('#kw', '123')// 强制等待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})
});

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/150917.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

实力认证|易知微上榜中国信息通信研究院数字孪生城市产业图谱!

近期,中国通信院就数字孪生技术在城市层面的广泛应用,根据数字孪生产业框架,结合产业发展动态和企业综合实力评估,选取了核心产业、关联产业和辐射产业等各领域业务代表性较强的企业(机构),形成…

Flink(六)【DataFrame 转换算子(下)】

前言 今天学习剩下的转换算子:分区、分流、合流。 每天出来自学是一件孤独又充实的事情,希望多年以后回望自己的大学生活,不会因为自己的懒惰与懈怠而悔恨。 回答之所以起到了作用,原因是他们自己很努力。 …

FPGA系列:1、FPGA/verilog源代码保护:基于Quartus13.1平台保护verilog源码发给第三方但不泄露源码

catlog 需求具体步骤工程描述去掉相关调试文件切换顶层模块并导出相应模块为网表文件切换回原顶层模块并添加相应保护模块的qxp文件再次编译工程 参考: 需求 有时需要将源码交付给第三方,但是源码中部分模块涉及到的核心代码无法暴漏给第三方。因此&…

2023年【高处安装、维护、拆除】模拟考试题及高处安装、维护、拆除模拟考试题库

题库来源:安全生产模拟考试一点通公众号小程序 2023年【高处安装、维护、拆除】模拟考试题及高处安装、维护、拆除模拟考试题库,包含高处安装、维护、拆除模拟考试题答案和解析及高处安装、维护、拆除模拟考试题库练习。安全生产模拟考试一点通结合国家…

C语言之qsort()函数的模拟实现

C语言之qsort()函数的模拟实现 文章目录 C语言之qsort()函数的模拟实现1. 简介2. 冒泡排序3. 对冒泡排序进行改造4. 改造部分4.1 保留部分的冒泡排序4.2 比较部分4.3 交换部分 5. bubble_sort2完整代码6. 使用bubble_sort2来排序整型数组7. 使用bubble_sort2来排序结构体数组7.…

golang学习笔记——接口interfaces

文章目录 Go 语言接口例子空接口空接口的定义空接口的应用空接口作为函数的参数空接口作为map的值 类型断言接口值 类型断言例子001类型断言例子002类型断言例子003巩固练习 Go 语言接口 接口(interface)定义了一个对象的行为规范,只定义规范…

基于java web个人财务管理系统

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

stable-diffusion-webui之webui.py

主要就是webui的启动这块,需要初始化的地方,东西还是挺多的。

8年资深测试,自动化测试常见问题总结,惊险避坑...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、自动化测试简介…

2023.11.18 Hadoop之 YARN

1.简介 Apache Hadoop YARN (Yet Another Resource Negotiator,另一种资源协调者)是一种新的 Hadoop 资源管理器,它是一个通用资源管理系统和调度平台,可为上层应用提供统一的资源管理和调度。支持多个数据处理框架&…

《轻购优品》新零售玩法:消费积分认购+众筹新玩法

《轻购优品》新零售玩法:消费积分认购众筹新玩法 引言:2023年开年已来,政府的工作报告提出“把恢复和扩大消费摆在优先位置”,并且把2023年定位为“消费提振年”,以“全年乐享全年盛惠”为主题多地政府共同发力&#x…

Altium Designer 相同模块的布局布线复用-AD

1、利用交互式布线,将两个相同模块的元器件在PCB上分块显示。 在原理图中,框选某一模块电路、按快捷键 TS 切换到PCB编辑界面、工具>器件摆放>在矩形区域内排列(可将模块中的器件都集中放置到矩形框内)。2、为模块电路添加 …

YOLOv8改进 | EIoU、SIoU、WIoU、DIoU、FocusIoU等二十余种损失函数

一、本文介绍 这篇文章介绍了YOLOv8的重大改进,特别是在损失函数方面的创新。它不仅包括了多种IoU损失函数的改进和变体,如SIoU、WIoU、GIoU、DIoU、EIOU、CIoU,还融合了“Focus”思想,创造了一系列新的损失函数。这些组合形式的…

Java方法中不使用的对象应该手动赋值为NULL吗?

在java方法中,不使用的对象是否应该手动赋值为null?我们先来通过一个示例看一下。 垃圾回收示例一 public class GuoGuoTest {public static void main(String[] args) {byte[] placeholder new byte[64 * 1024 * 1024];System.gc();} } 上面代码向内…

vue3 tsx 项目中使用 Antv/G2 实现多线折线图

Antv/G2 文档 Antv/G2 双折线图 安装 antV-G2 通过 npm 安装 项目中安装 antv/g2 依赖库&#xff1a; npm install antv/g2 --save安装成功&#xff1a; 浏览器引入 可以将脚本下载到本地&#xff0c;也可以直接引入在线资源。 引入在线资源 <!-- 引入在线资源&…

java springboot在测试类中启动一个web环境

我们在开发过程中 可以对数据层 业务层做测试 那我们的表现层能做测试吗&#xff1f; 答案自然是可以的 但是 前提 我们要有一个web环境 我们现在 测试类运行 明显是个很普通的java程序 还是这个 SpringBootTest 它有一个 webEnvironment 我们可以先这样写 package com.examp…

城市生命线丨市政综合管廊监测系统的效果

市政综合管廊&#xff0c;又被称为城市生命线&#xff0c;是我们在地下建造的一个智慧而高效的空间。它把市政、电力、通讯、燃气、给排水等各种管线集于一体&#xff0c;解决了城市中反复开挖路面、架空线网密集、管线事故频发等问题&#xff0c;为城市运行提供了重要的基础设…

Windows安装Vmware 虚拟机

目录 一、Vmware 虚拟机介绍 二、Vmware 虚拟机的三种网络模式 2.1桥接模式 2.2仅主机模式 2.3NAT 网络地址转换模式 三、Vmware 虚拟机的安装 一、Vmware 虚拟机介绍 VMware Workstation Pro 是一款可以在个人电脑的操作系统上创建一个完全与主机操作系统隔离的 虚拟机&…

【技巧】Word和Excel如何互相转换?

Word文档里有数据表格&#xff0c;如果编辑修改起来感觉没那么方便或容易出错&#xff0c;不妨将文档转换成Excel表格再来处理。 将Word文档转换成Excel&#xff0c;比较常用的是复制粘贴方法&#xff0c;也就是将Word文档的表格复制后&#xff0c;再粘贴到Excel表格里&#x…

FPC焊点剥离失效分析

一、案例背景 FPC在后续组装过程中&#xff0c;连接器发生脱落。在对同批次的样品进行推力测试后&#xff0c;发现连接器推力有偏小的现象。据此进行失效分析&#xff0c;明确FPC连接器脱落原因。 #1、#2样品连接器脱落连接器脱落&#xff1b;#3样品连接器未脱落&#xff1b;…