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

这篇具有很好参考价值的文章主要介绍了Web 自动化神器 TestCafe—页面高级操作篇。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

♥  前  言

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

Web 自动化神器 TestCafe — 页面基本操作篇

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

一、鼠标拖拽 

鼠标拖拽鼠标拖拽

1、拖拽元素偏移

  • 方法:t.drag

可以将元素相对于原来位置进行偏移拖拽。
  • 案例

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、拖拽元素到另一个元素位置

  • 方法:dragToElement

将元素拖拽到另一个元素的位置。
  • 案例

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')
});

如果你想学习自动化测试,我这边给你推荐一套视频,这个视频可以说是B站播放全网第一的自动化测试教程,同时在线人数到达1000人,并且还有笔记可以领取及各路大神技术交流:798478386   【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)_哔哩哔哩_bilibili【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)共计200条视频,包括:1、接口自动化之为什么要做接口自动化、2、接口自动化之request全局观、3、接口自动化之接口实战等,UP主更多精彩视频,请关注UP账号。https://www.bilibili.com/video/BV17p4y1B77x/?spm_id_from=333.337.search-card.all.click

二、文件上传  

1、上传文件

  • 方法:t.setFilesToUpload:

  • 参数:

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

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

test('Uploading', async t => {
    await t
      // 上传文件
        .setFilesToUpload('#test2+input', [
            'C:\\课件\\images\\p5_1_1.png',
          'C:\\课件\\images\\p5_1.png'
        ])
});

2、清除上传文件

  • 方法:t.clearUpload

删除文件上传元素中,已选择的上传文件

  • 案例

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

test('Uploading', async t => {
    await t
      // 上传文件
        .setFilesToUpload('#test2+input', [
            'C:\\课件\\images\\p5_1_1.png',

        ])
      .clearUpload("'#test2+input")

});

三、截屏操作  

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

1、页面进行截图

  • 方法:t.takeScreenshot

对整个页面进行截图,截取下来的图片会自动保存到 screenshot 的目录中

  • 参数说明:

范围

描述

默认值

path 

屏幕截图文件的相对路径和名称(非必填)。 

fullPage 

指定应捕获整个页面,包括由于溢出而看不到的内容(非必填)。 

false

  • 例子
import { Selector } from 'testcafe';

fixture `页面截图`
    .page `https://www.baidu.com`;

// 百度首页搜索柠檬班,然后整个页面截图
test('screenshot ', async t => {
    await t
        .typeText('#kw', '柠檬杯')
        .click('#su')
        .takeScreenshot({
            path: 'index_page.png',
            fullPage: true
        });
});

 

2、元素截图

  • 方法:t.takeElementScreenshot()

对页面指定的具体元素进行截图

  • 参数说明

范围 描述
selector 屏幕截图的网页元素 
path  屏幕截图文件的相对路径和名称(非必填)。 
options  定义如何截屏的选项(非必填)。详细请参阅官方文档 

(官方文档:https://testcafe.io/documentation/402676/reference/test-api/testcontroller/takeelementscreenshot?utm_source=testingpai.com)

下面的示例演示了如何使用 t.takeElementScreenshot 动作。

  • 例子

import { Selector } from 'testcafe';

fixture `页面截图`
    .page `https://www.baidu.com`;

// 百度首页搜索按钮截图
test('screenshot ', async t => {
    await t
        .takeElementScreenshot('#su', 'su_ele.png');

});

四、窗口滚动  

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);
});

五、iframe 切换  

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

1、切换到指定的 iframe 中

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

  • 例子

import { Selector } from 'testcafe';

fixture `qq邮箱登录之iframe切换`
    .page `https://mail.qq.com/`;

test('iframe test', async t => {
    await t
      //切换到id为login_frame的iframe中
        .switchToIframe('#login_frame')
      // 输入账号
      .typeText('#u', '1234567872')
      // 输入面面
      .typeText('#p', '123qwe')
});

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

  • 方法:switchToMainWindow()

  • 例子

import { Selector } from 'testcafe';

fixture `qq邮箱登录之iframe切换`
    .page `https://mail.qq.com/`;

test('iframe test', async t => {
    await t
      //切换到id为login_frame的iframe中
        .switchToIframe('#login_frame')
      // 输入账号
      .typeText('#u', '1234567872')
      // 输入面面
      .typeText('#p', '123qwe')
});

test('iframe test', async t => {
    const mobile_ele = Selector('a').withText('手机版')
    await t
      // 切换回原窗口
        .switchToMainWindow();
      // 点击窗口中的手机版
      .click(mobile_ele)
});

六、页面访问

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

  • 方法:navigateTo

在当前窗口访问另一个页面

  • 案例

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

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

七、窗口切换  

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

1、获取窗口描述符

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

  • 例子

import { Selector } from 'testcafe';

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

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

2、切换到特定窗口

  • 方法:t.switchToWindow

  • 参数

参数名 描述
windowDescriptor 从打开的浏览器窗口获得的描述符对象。 
  • 例子

import { Selector } from 'testcafe';

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

test('Wait test', async t => {
    // 获取当前窗口的描述符
    const old_win = await t.getCurrentWindow();
  // 打开一个新窗口 
    const new_win = await t.openWindow('http://www.taobao.com')
    // 切换到老窗口
    t.switchToWindow(old_win) 
    // 再切换到新窗口
    t.switchToWindow(new_win) 
});

3、切换上一个活动窗口

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

  • 方法:t.switchToPreviousWindow

  • 例子

import { Selector } from 'testcafe';

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

test('Wait test', async t => {
  // 打开一个新窗口,接收新窗口的描述符
    await t.openWindow('http://www.taobao.com')
    // 切换到上一个窗口(就窗口)
    t.switchToPreviousWindow()
    // 切换回来
    t.switchToPreviousWindow()
    // 切换到上一个窗口
    t.switchToPreviousWindow()
});

4、切换的父级窗口

  • 方法:t.switchToParentWindow

  • 例子:文章来源地址https://www.toymoban.com/news/detail-666765.html

import { Selector } from 'testcafe';

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

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

到了这里,关于Web 自动化神器 TestCafe—页面高级操作篇的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 搭建自动化 Web 页面性能检测系统 —— 实现篇

    我们是袋鼠云数栈 UED 团队,致力于打造优秀的一站式数据中台产品。我们始终保持工匠精神,探索前端道路,为社区积累并传播经验价值。。 本文作者:琉易 liuxianyu.cn 前段时间分享了《搭建自动化 Web 页面性能检测系统 —— 设计篇》,我们提到了性能检测的一些名词和自

    2024年02月09日
    浏览(42)
  • 搭建自动化 Web 页面性能检测系统 —— 设计篇

    我们是袋鼠云数栈 UED 团队,致力于打造优秀的一站式数据中台产品。我们始终保持工匠精神,探索前端道路,为社区积累并传播经验价值。。 本文作者:琉易 liuxianyu.cn 页面性能对于用户体验、用户留存有着重要影响,当页面加载时间过长时,往往会伴随着一部分用户的流

    2024年02月06日
    浏览(52)
  • (九) web自动化测试-selenium处理页面的弹框

    input标签可以直接使用send_keys(file path)上传文件 方法: el = driver.find_element_by_id(‘上传按钮id’) el.send_keys(“文件路径+文件名”) 示例: 打开链接:https://image.baidu.com/ 点击识别上传按钮 点击上传按钮 选择本地照片上传 在页面操作的时候会遇到javascript生成的alert、comfirm和pro

    2023年04月11日
    浏览(61)
  • 软件测试/测试开发丨Selenium Web自动化测试 高级控件交互方法

    本文为霍格沃兹测试开发学社学员学习笔记分享 原文链接:https://ceshiren.com/t/topic/27045 使用场景 对应事件 复制粘贴 键盘事件 拖动元素到某个位置 鼠标事件 鼠标悬停 鼠标事件 滚动到某个元素 滚动事件 使用触控笔点击 触控笔事件(了解即可) https://www.selenium.dev/documentati

    2024年02月09日
    浏览(101)
  • 使用pytest+selenium+allure实现web页面自动化测试

    测试文件 base 基本方法 data 测试数据 page web页面相关操作 image 测试截图 log 日志文件 report 测试报告文件 temp 临时文件 tool 文件读取,发邮件文件 TestCases 测试用例 在page下的__init__.py文件下配置 在base下创建一个webpage.py文件 在base下创建一个driver.py文件 在base下创建一个logger

    2024年02月03日
    浏览(65)
  • 【selenium自动化测试】如何定位页面元素,及对页面元素的操作方法

    selenium元素定位 ​selenium定位元素的方式有8种。 fild_element(by,value):by表示使用的定位方式,定位方式可以参见By类。value表示值,例如:根据id定位 By.ID,value=id属性的值。该方法返回元素对象,返回值如下: 这个返回结果说明:返回值为WebElement类的对象,元素在使用方法时

    2024年02月10日
    浏览(68)
  • Selenium 自动化高级操作与解决疑难杂症,如无法连接、使用代理等

    这里记录一些关于 Selenium 的常用操作和疑难杂症。 有一些细节的知识点就不重复介绍了,因为之前的文章中都有! 如果对本文中的知识点有疑问的,可以先阅读我以前分享的文章! 模块 链接 作用 selenium https://www.selenium.dev/zh-cn/documentation/ 支持 web 浏览器自动化的一系列工具

    2024年02月04日
    浏览(45)
  • Web自动化之Selenium-鼠标操作

    本文总结了Selenium常用的鼠标操作。  打开百度网站,点击首页的新闻。 WebDriver封装了一套鼠标操作的包, ●引入包:from selenium.webdriver.common.action_chains import ActionChains。 ●定位元素,存储到某个变量:ele = driver.find_element_by_×××(\\\'××\\\')。 ●固定写法:ActionChains(driver).click(e

    2024年02月11日
    浏览(45)
  • Web自动化之Selenium常用操作

    本文总结使用selenium进行web/UI自动化时,会用到的一些常用操作。 是元素定位另外一种方式,跟上面的8种底层一样。 在定义driver的时候设置chrome_options参数,该参数是一个Options类所实例化的对象。其中,常用的参数是设置浏览器是否可视化和浏览器的请求头等信息,前者可

    2024年02月02日
    浏览(54)
  • 【WEB自动化测试】-鼠标和键盘操作

    常见的鼠标操作有:点击、右击、双击、悬停、拖拽等,对于这些鼠标操作Selenium都封装了相应的操作方法。 1.1 为什么操作鼠标 现在Web产品中村子啊丰富的鼠标交互方式,作为一个Web自动化测试框架。需要应对这些鼠标操作的应用场景。 1.2 鼠标操作的方法 说明:在Seleniu

    2024年02月15日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包