首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

testcafe:在断言失败时报告页面HTML

在使用 TestCafe 进行端到端测试时,有时在断言失败时获取页面的 HTML 可能会非常有用,以便更好地调试问题。你可以通过在断言失败时捕获页面的 HTML 并将其记录到报告中来实现这一点。

以下是一个示例,展示如何在 TestCafe 中实现这一功能:

1. 安装 TestCafe

首先,确保你已经安装了 TestCafe。你可以使用 npm 来安装:

代码语言:javascript
复制
npm install -g testcafe

2. 创建一个 TestCafe 测试文件

创建一个新的测试文件,例如 test.js,并在其中编写测试代码。

3. 捕获页面 HTML 并在断言失败时记录

你可以使用 TestCafe 的 ClientFunction 来获取页面的 HTML,并在断言失败时捕获并记录它。

以下是一个示例代码:

代码语言:javascript
复制
import { Selector, ClientFunction } from 'testcafe';

// 获取页面 HTML 的 ClientFunction
const getPageHTML = ClientFunction(() => document.documentElement.outerHTML);

fixture `My Fixture`
    .page `http://example.com`;

test('My Test', async t => {
    const element = Selector('#non-existent-element');

    try {
        // 断言
        await t.expect(element.exists).ok('Element does not exist');
    } catch (error) {
        // 捕获页面 HTML
        const pageHTML = await getPageHTML();
        
        // 记录页面 HTML
        console.log('Page HTML at the time of failure:', pageHTML);

        // 重新抛出错误以确保测试失败
        throw error;
    }
});

4. 运行测试

使用 TestCafe 运行测试:

代码语言:javascript
复制
testcafe chrome test.js

解释

  1. ClientFunction: getPageHTML 是一个 ClientFunction,它在浏览器上下文中执行并返回整个页面的 HTML。
  2. try-catch: 在断言之前使用 try-catch 块来捕获断言失败的情况。
  3. 捕获页面 HTML: 在 catch 块中调用 getPageHTML 来获取页面的 HTML。
  4. 记录页面 HTML: 使用 console.log 将页面 HTML 记录到控制台。
  5. 重新抛出错误: 重新抛出捕获的错误以确保测试仍然失败。
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 种草Cypress和TestCafe,QA同学一定想了解的Web UI自动化测试工具

    运行端到端测试时经常会遇到一些棘手的问题,如运行时间过长、测试过于零碎、还需要修复无头模式下运行的测试所导致的CI失败。...然而,TestCafe和Cypress更让人惊喜,他们是内置了自动等待机制的。 TestCafe具有内置的自动等待机制,它不需要专用的API来等待页面元素出现。...Assertions:智能断言查询机制,重试断言结果直到通过或超时。...启用Live模式运行测试TestCafe会打开浏览器运行测试,并显示报告。...再比如,我个人在使用testcafe过程中遇到了框架不稳定的问题,执行typetext()(用于输入框中输入字符串),文字的后半部分输入尚未完整就继续执行下一个action,且排除了版本匹配问题后仍不稳定出现

    2.9K20

    2020 可替代Selenium的测试框架Top15

    自动生成的元素选择器——TestCafe Studio为测试中使用的每个页面元素生成一个选择器,并提供涵盖各种测试场景的其他选择器列表。...你可以有效地维护现有的Selenium脚本,从减少维护,减少修复bug而减少测试所花费的时间。 使用页面对象模型创建Selenium测试套件。团队可以从一开始就迅速建立可维护的测试实践。...主要特点: 测试状态菜单功能 --> 可查看通过或失败的测试数量 Cypress会自动等待命令和断言再继续 允许检查响应网站与视窗大小。 它拍摄测试运行的快照。...主要特点: 基于HTML的错误报告与截图 易于编写/读取的语法 它提供了多种浏览器支持 使用Galen specs语言,你可以描述任何复杂的布局,包括不同的屏幕大小或浏览器。...它可以与任何兼容HTML5的浏览器一起运行,而无需进行任何安装。 主要特点: 它允许实时观察测试执行情况以及详细结果,可单击的堆栈跟踪异常和屏幕截图。 它允许多台机器上并行执行自动化测试用例。

    4.7K42

    前端自动化测试入门

    Puppeteer 常用于端到端测试,可以生成测试报告和截图。TestCafe:一个基于JavaScript的自动化测试框架,它可以真实浏览器中进行测试。...3、选择合适的断言编写测试用例,我们需要选择合适的断言来验证测试结果是否符合预期,常用的断言方法有:相等断言:验证两个值是否相等。包含断言:验证一个值是否包含在另一个值中。...6、分析测试结果在执行测试用例之后,需要分析测试结果并做出相应的调整,以下是分析测试结果的基本步骤:查看失败用例:查看测试报告中的失败用例,了解失败原因和产生原因。...对于失败用例,我们需要尽快发现问题并修复。修改测试脚本:根据失败用例的原因,修改测试脚本。可能需要增加断言、调整操作步骤或优化代码逻辑等。...通过将前端自动化测试与持续集成和自动化构建工具结合,我们可以代码提交后自动运行测试脚本,并在测试失败发送警报通知开发人员。

    10811

    推荐几款常用Web自动化测试神器!

    它提供了丰富的API,可以模拟用户浏览器中的操作。 TestCafeTestCafe是一个跨浏览器的自动化测试工具,可以各种浏览器中运行测试用例。...重点学习元素定位、操作浏览器、断言报告等。...实时反馈:Cypress提供实时的测试反馈,可以测试过程中实时查看页面操作和断言结果,方便调试和定位问题。...第一个测试用例验证页面标题是否包含"Example",第二个测试用例模拟填写表单并提交,然后断言结果是否包含"Thank you"。每个测试用例之前,都会打开网页。...脚本中启动了浏览器,创建了新页面,打开了网页,然后进行了断言和表单操作。最后关闭了浏览器。断言部分使用了expect语法,可以使用Jest等测试框架进行断言

    2.4K30

    Web UI自动化

    公共方法代表页面提供的服务 2. 不要暴露页面细节 3. 不要把断言和操作细节混用 4. 方法可以 Return 到新的页面 5. 不要把整页内容都放到 PageObject 中 6....具有很多第三方插件,并且可以自定义扩展,比较好用的如allure-pytest(完美测试报告)、pytest- rerunfailures(失败case重复执行)、pytest-xdist(多CPU分发...' with allure.step("delete chart"): distribute_analysis.delete_first_distribution_chart() 测试报告样例 嵌入截图的失败用例样例...集成质量平台 自动化框架搭建完成,但这仅仅是第一步,为了便于跟踪和验证自动化发现的问题,又将自动化框架与自研的质量平台进行集成,并与飞书和 Jira 打通,形成一个完整可追踪的闭环流程,具体流程如下: 1.质量平台的页面上...,选择测试环境地址和项目 ID,然后点击【启动 Web UI 测试】按钮,即在选定的测试环境和项目下,执行自动化用例 2.自动化用例执行完成,会发送飞书通知,并且自动爬取每一条失败用例的数据,展示质量平台上

    1.1K00

    Airtest IDE 自动化测试6-断言存在(assert_exists)不存在(assert_not_exists)

    断言不相等 断言存在(assert_exists) assert_exists(args, *kwargs) 设备屏幕上存在断言目标 参数: v 要检查的目标 msg 断言的简短描述,它将被记录在报告中....png”), “assert exists”) 使用示例,断言 “我的” 页面存在 “登录/注册” 按钮 ?...运行用例后查看测试报告 ? 断言不存在(assert_not_exists) assert_not_exists 跟上面的 assert_exists 用法一样 断言我的页面不存在“新课推荐” ?...断言失败 AssertionError 当断言失败的时候,会抛出AssertionError异常,程序不会继续往下走了 我的页面,查找“新课推荐”,故意让断言失败 ?...,不会立马断言失败,此时会有个timeout时间,默认是20秒。

    2.3K10

    后selenium时代Web UI自动化测试框cypress

    浏览器中运行的任何东西进行快速、简单和可靠的测试 当然是cypress 出现前:selenium方案 需要框架:Mocha Qunit Jasmine Karma 需要断言库:Chai Expect.js...相反,我们专注于一件事——当您为您的网络应用程序编写端到端测试,提供良好的使用体验 特点三、在任何前端框架或网站上工作 Cypress可以测试任何在网络浏览器中运行的东西。...Cypress也同样适用于旧的服务器渲染页面或应用程序 特点四、只能用JavaScript编写 虽然您可以从任何其他语言编译成JavaScript,但最终测试代码是浏览器本身内部执行的。...有了赛普拉斯,你可以一个地方得到多种工具。没有必要安装10个独立的工具和库来设置您的测试套件。...3 而TestCafe还在试验中 ? ?

    3.3K21

    从TechRadar看UI自动化测试的未来

    2017年第17期和2018年19期技术雷达中,分别出现了两个新的工具——cypress,testcafe,之前只接触过webdriver框架的同学可能会有些陌生。...先来详细的介绍下cypress以及我所在项目使用中踩过的坑,关于testcafe会在另外一篇文章中介绍,testcafe主要是用来做UI的回归测试,以及多浏览器测试,cypress不足之处则是testcafe...launcher页面运行,显示测试运行过程。...当你按照以下图做了配置,高高兴兴的云端运行时,发现根本没有用,因为你没交钱! ? 有没有方法解决?有 有 有!...坑三:当元素不存在或者没有找到时,测试会失败 这个坑貌似听起来很正确,但我们想一下这个场景:如果我们希望当某个元素不存在,需要执行某个操作。但是因为以上默认的实现,没有找到元素,所以会直接报错。

    2.3K20

    利用UIRecorder做页面元素巡检

    步骤:点击“添加断言”按钮,点击需要断言的 DOM 节点,页面会弹出添加断言的窗口,弹窗中输入相关信息,点击确认,添加断言成功。...调用公共脚本的方法:开始页面的时候输入 common/test.login.js,或者录制中间页面,点击脚本跳转,脚本跳转弹窗中输入 common/test.login.js。...默认会打开同步校验浏览器,该浏览器的作用是录制的同时做回归测试校验,如果提示执行失败,则说明回归测试过程很大几率也会执行失败,需要对录制过程进行优化(比如借助工具栏辅助功能)。...3.1 本地启动 WebDriver 服务即在电脑本地启动 WebDriver 服务,可以本地查看浏览器回归效果及回归报告。.../reports/index.html 文件查看格式化报告,效果如图 3.4 上传用例至gitee 本地回归通过后,将用例提交至代码仓库,用于自动化巡检。

    2.2K20

    Airtest IDE 自动化测试16 -断言相等和不相等(assert_equal , assert_not_equal)

    断言不相等 assert_exists 和 assert_not_exists 在前面这篇写过https://www.cnblogs.com/yoyoketang/p/14803947.html assert_equal...断言2个值相等,实际结果等于期望结果 参数: first – 第一个值 second – 第二个值 msg – 断言的简短描述,它将被记录在报告断言失败引发异常: AssertionError...– 如果断言失败 返回: None 支持平台: Android, Windows, iOS 示例: >>> assert_equal(1, 1, msg="assert 1==1") 断言两个值相等...,需传入2个参数,实际结果和期望结果 assert_equal("实际结果", "期望结果", "请填写断言的简短描述") Airtest 是截图图片,需获取页面元素的文本,通常与 poco 获取属性的脚本一起做断言...参数: first – 第一个值 second – 第二个值 msg – 断言的简短描述,它将被记录在报告中 引发: AssertionError – 如果断言异常 返回: None 支持平台: Android

    1.5K80

    接口测试平台代码实现80: 多接口用例-20

    首先我设计raw-Json的格式: 然后代码是: 注意,这里用的是repr() 并不是str() 然后看看报告: 没问题,qid变成了字符串,en是整形。...我们先把请求的返回体 打印出来,方便我们查看报告判断。...大家仔细阅读三种规则,然后我们依次实现之前,要修复一个bug!!!...-全文检索: 进行全文检索,存在即通过,全部按照字符串检索,不要加引号,多个用换行分隔,例如: 123495 请求成功 code:200"> 修复bug后,刷新页面,开始调试。...代码实现: 我们来运行下看看结果: 这里用例不出意外的失败了,爆出了 值不等 的失败详情。 今天就到这里了。大家多消化消化,不要着急。

    25530

    怎么用Python初步实现页面对象和测试用例的分离?举个登录的栗子

    self.lg.login('', 'python') # # 步骤 输入用户名:XXx 密码XXX 点击登陆 # # 断言 登陆页面 提示:请输入手机号 #...2.核心思想是:页面对象和测试用例的分离。 测试用例中一定要有前置,用例,断言。(页面类的函数调用、测试数据、断言) 测试用例=测试数据+页面方法调用 先写注释,再想想这个注释我该如何实现。...4.每个断言还要再写成一个函数到相应页面,只要是页面的操作都要写一个函数。但是有的情况下可以不写,大部分情况下都要写的。 当你有几百个用例的时候,断言很多,如果不根据页面封装起来,那后面就抓瞎了。...5.断言结果不需要存在excel里。 web自动化中的断言,每个用例都不一样,不像接口非常固定,不需要准备个断言数据放那,可以自己页面获取数据动态比对。 6.怎么知道通过还是失败? 有测试报告。...测试报告会显示通过or失败。 7.首页当中会有很多的功能点,有的人封装的比较细,有的人封装的比较粗,这个是没有关系的。毕竟这个没有一个统一的标准,大家都是根据自己实际对页面的分析情况做的处理。

    76820

    iOS单元测试的那些事儿

    , ...) // 非空断言,当表达式为空测试失败 XCTAssertNotNil(expression, ...) // 布尔断言,当表达式为false测试失败 XCTAssert(expression..., ...) // 布尔断言,当表达式为false测试失败 XCTAssertTrue(expression, ...) // 布尔断言,当表达式为true测试失败 XCTAssertFalse(expression..., ...) // 实例断言,当两个表达式结果为相同的类实例,测试失败 XCTAssertNotIdentical(expression1, expression2, ...) // 差异断言,两表达式结果的差异大于设置阈值测试失败..., ...) // 无异常断言,当表达式有异常抛出测试失败 XCTAssertNoThrow(expression, ...) // 无特殊异常断言,当表达式有指定的异常抛出测试失败 XCTAssertNoThrowSpecific...,之后执行此用例将按照录制的步骤进行,如果页面元素没有按照预期出现,则用例会失败

    1.1K20

    Python测试框架pytest(20)插件 - 生成html报告、重复执行用例、用例执行顺序、多重断言

    ) 4.1、安装 4.2、assert多重断言 4.3、pytest-assume多重断言 4.4、上下文管理器 1、pytest-html(生成html报告) 1.1、安装 命令行中运行以下命令进行安装...打开测试报告: 1.3、报告优化(报错截图) 执行web自动化的时候,希望测试用例失败,以截图的方式展示html报告里。 1、修改conftest.py文件 脚本代码: #!...,输入执行命令: pytest test_html_screenshot.py --html=report.html --self-contained-html 4、运行结果: 将失败截图展示报告里...用例描述显示报告的Description内,并且将失败截图展示报告里。...-x(如果您尝试诊断间歇性故障,则一次又一次地运行相同的测试直到失败,将很有用。您可以将 pytest 的 -x 选项与 pytest-repeat 结合使用,以强制测试运行器第一次失败停止。)

    98210

    代码质量保证-单元测试框架pytest

    pytest-selenium(集成selenium)、 pytest-html(完美html测试报告生成)、 pytest-rerunfailures(失败case重复执行)、 pytest-xdist...断言函数返回某个值,如果此断言失败,将看到函数调用的返回值,pytest 支持显示最常见的子表达式的值,包括调用、属性、比较以及二进制和一元运算符。...示例: pytest测试报告 使用 -r 参数:可用于测试会话结束显示“简短测试摘要信息”,使大型测试套件中的所有故障、跳过、xfails等的清晰图像变得容易。...-resultlog 参数:可用于测试会话结束生成文本格式报告文件 执行: pytest test_pytest.py --resultlog=report.txt 当然也可以以其他方式生成测试报告...使用第三方插件pytest-html : 可用于测试会话结束生成html格式报告文件 执行: pytest test_pytest.py --html=result.html html报告需要安装

    79820

    web自动化 基于python+Selenium+PHP+Ftp实现的轻量级web自动化测试框架

    :目前计划创建后,其拥有的测试用例保持不变,即无法删,减) 3、可通过配置文件,配置需要运行的浏览器,支持自由扩展 4、可通过配置文件灵活选择测试需要的web site,和数据库 5、可自动生成HTML...可视化接口测试报告 6、可根据配置测试完成后,自动发送测试报告邮件,邮件发送支持SSL加密发送和非SSL加密发送,同时支持往多个邮箱发送邮件 7、支持文件、控制台的日志打印,可分别控制开关 8、...说明: 1、提供程序入口,测试计划,测试用例,测试步骤,测试报告类 2、因时间仓促及其他原因等,对象定义、设计上或多或少存在一些不合理的地方 7、 页面元素管理 ? 8、 用例管理 ?...注: 1、目前“操作”仅支持元素操作,执行函数 2、时间关系,仅实现了小部分操作 3、关于步骤断言的想法:这块可把断言看成是步骤,步骤失败断言失败,用例也失败,否则成功 4、用例依赖:用例之间最好互不依赖...,不同操作会打开不同的页面,如 果某个操作某个页面失败了,没返回到另一个用例查找元素需要的页面,这会执行另一个页面的操作是否也就意味着失败呢,除非每个用例之间做到了互不依 赖?

    1.1K30

    记一次Appium实战

    使用testng的Assert类,可以封装一些简单的断言. /** * 断言页面包含某个的元素 */ public void assertContain(String text...,如果立即断言断言失败,因为页面跳转一般是由1~3秒的页面加载,这个时候元素还没有呈现加载处理,如果获取页面元素进行断言必然会抛异常....解决方法大致可以每个前言加等待时间或者设置断言超时时间 失败截图 如果case中使用了断言方法,在运行多条case以后,肯定是关心case的成功或者失败,失败具体是什么原因或者当时失败页面状态. testng...base64方法把图片输出到测试报告中 测试报告 关于选用测试报告插件,testng提供了测试报告,但是不太美观.也可以使用reportng,也仅仅比testng稍微好看点....推荐两个比较好的测试报告框架,Allure和extentreports.我目前使用的是extentreports,大致生成测试报告如下 运行 因为使用的maven,pom中使用了maven-surefire-plugin

    54111
    领券