一文读懂: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 => {
  // 输入 123
    await 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
        })
});

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

自动发微博脚本工具,可批量定时发送,按键精灵完全开源版

就跟标题上面讲的,软件是我之前开发好的,所有功能都能用,是按键精灵的脚本,只是单设备操作,也可以在模拟器下面操作,UI代码方面都设计的很完整,我这边就干脆分享出来给大家用,不用繁…

工程建设智慧施工云平台源码 智慧工地平台源码

智慧工地平台源码 工程建设智慧施工云平台源码 技术框架:微服务架构JavaSpring Cloud UniApp MySql 智慧工地平台是一种智慧型、系统性的工地信息化解决方案,它把现代信息技术融入到建设工程管理中,协调各方资源,优化施工过程&…

掌握苏宁API,一键获取商品详情,解锁无尽商业可能

苏宁的API接口可以用于获取商品详情。以下是一个示例的API接口,通过商品ID获取商品详情: https://open.suning.com/api/content/product/getById?productId商品ID&appKey你的应用密钥&sign你的签名&formatjson 在上面的接口中&#xff0c…

骨传导耳机的优缺点是什么?有什么值得入手的骨传导耳机吗?

骨传导耳机的优点还是挺多的,比如说:佩戴舒适、避免听力损伤、使用更安全灯,在详细了解骨传导耳机有什么优点和缺点之前,先来认识一下什么是骨传导耳机。 骨传导耳机是一种通过人体骨骼来传递声音的耳机,与传统的耳机相…

SAP BW 查看DTP执行结果

SAP BW 查看DTP执行结果 1.选中DTP,双击打开 2.点击“数据传输流程监控器” 3.指定查询期间,执行 4.点击“数据管理存储对象” 5.选中执行记录行的“加载监控器” 6.点击“数据管理源” 7.预览,读取预览数据 8.显示数据结果

python连接elasticsearch

问题一:urllib3.exceptions.ProtocolError: (‘Connection aborted.’, RemoteDisconnected(‘Remote end closed connection without response’)) 协议写错了,是https 问题一:SSLError([SSL: CERTIFICATE_VERIFY_FAILED] certificate ver…

Linux安装OpenCV并配置VSCode环境

Linux安装OpenCV并配置VSCode环境 安装OpenCV环境安装必需工具下载并解压OpenCV库(Opencv Core Modules和opencv_contrib)创建构建目录,进行构建验证构建结果安装验证安装结果 配置VSCode环境创建项目文件修改配置信息执行程序 安装环境 Ubun…

​​​​​​​实验二 运算符和内置函数使用(Python程序设计实验报告)

实验二 运算符和内置函数使用 实验环境 Python集成开发环境IDLE/Anaconda 实验目的 1.熟练掌握常用运算符的使用。 2. 熟练掌握常用内置函数的使用。 三、实验内容 1. 输入三角形的3个边长a、b、c,求三角形的面积area。利用如下海伦公式求三角形的…

docker中怎么启动容器

1、首先在linux中使用以下命令来启动 Docker 服务: sudo systemctl start docker2、然后下面的命令显示所有的容器列表,包括正在运行和已停止的容器。 docker ps -a然后找到容器ID 3、使用 docker start 启动一个已停止的容器: docker s…

视频修复软件 Aiseesoft Video Repair mac中文版功能

AIseesoft Video RepAIr mac是一款专业的视频修复软件,主要用于修复损坏或无法播放的视频文件。AIseesoft Video RepAIr是一个功能强大的程序,可以帮助恢复丢失或损坏的数据的视频。只要您以相同的格式提供示例视频,并在功能强大的技术的支持下,只需单击几下即可收获…

开放式耳机和骨传导耳机有什么区别?哪款值得入手?

开放式耳机和骨传导耳机最大的区别就是佩戴方式不同和传声方式不同,相比之下骨传导耳机更值得入手一些。但其实骨传导耳机也是开放式耳机,下面先了解下开放式耳机都有哪几种。 一、开放式耳机分哪几种? 开放式耳机分为气传导和骨传导。这两种…

如何定位判断是前端的bug还是后端bug?

前言 随着开发软件趋向于大型化复杂化,软件测试逐渐成为一个专业,需要运用专门的方法和手段,需要专门人才来管理。但是外面的小道消息总是在传:软件测试就只是找bug的!这个我可就不同意了~ 软件测试员是找bug&#x…

短信登录获取图形验证码调用过程

文章目录 短信登录获取图形验证码调用过程1、输入某个要获取短信验证的电话 短信登录获取图形验证码调用过程 1、输入某个要获取短信验证的电话 调用到skin皮肤里面的sms_login里面的xml的按钮控件: 这个按钮属于点击信息在Notify里面收到: void CSMSLoginDlg::Notify(TNotif…

自动化测试,5个技巧轻松搞定

想要在质量保证团队中赢得核心?当你组建你的网络应用时要记住这些技巧,可以变得更容易分析并快速创建更多准确可重复的自动化测试。 1.歧义是敌人 尽可能使你的代码具体化。当然,你已经遵循了W3C标准,对吗?以下有三件…

EtherCAT超高速实时运动控制卡XPCIE1032H上位机C#开发(二):EtherCAT总线初始化

XPCIE1032H功能简介 XPCIE1032H是一款基于PCI Express的EtherCAT总线运动控制卡,可选6-64轴运动控制,支持多路高速数字输入输出,可轻松实现多轴同步控制和高速数据传输。 XPCIE1032H集成了强大的运动控制功能,结合MotionRT7运动…

Isight 2023 新功能介绍

​​Isight是一个仿真分析流程自动化和多学科多目标优化工具,它提供了一个可视化的灵活的仿真流程搭建平台,同时提供与多种主流CAE分析工具的专用接口,利用此工具,用户可以方便的以拖拽的方式可视化的快速建立复杂的仿真分析流程&…

达芬奇DaVinci Resolve Studio 18.6.3 for Mac

DaVinci Resolve Studio 18是一款专业的视频编辑和调色软件,适用于电影、电视节目、广告等各种视觉媒体的制作。它具有完整的后期制作功能,包括剪辑、调色、特效、音频处理等。 以下是DaVinci Resolve Studio 18的主要特点: - 提供了全面的视…

一、认识STM32

目录 一、初识STM32 1.1 STM32的命名规则介绍 1.2 STM32F103ZET6资源配置介绍 二、如何识别芯片管脚 2.1 如何寻找 IO 的功能说明 三、构成最小系统的要素 一、初识STM32 1.1 STM32的命名规则介绍 以 STM32F103ZET6 来讲解下 STM32 的命名方法: &…

SpringBoot 2.x 实战仿B站高性能后端项目

SpringBoot 2.x 实战仿B站高性能后端项目 下栽の地止:请看文章末尾 通常SpringBoot新建项目,默认是集成了Maven,然后所有内容都在一个主模块中。 如果项目架构稍微复杂一点,就需要用到Maven多模块。 本文简单概述一下&#xff0c…