TestCafe是否支持多个选项卡测试

如何解决TestCafe是否支持多个选项卡测试

我有一个场景,单击一个按钮会打开一个标签,但是当我尝试使用testcafe时,它会在一个新窗口中而不是新标签中打开。这是为什么? testcafe不支持新的标签方案吗?

解决方法

我认为并没有必要使用多个标签。通常人们会尝试测试链接是否在新标签页中打开,但是为什么?

<a class="c-cookie-bar__text-link" target="_blank" href="/private-data-info">More information</a>

您知道带有target="_blank"的链接将在新标签中打开。这不是您的团队要编程的内容,这就是浏览器的工作方式。如果每种可想象的浏览器在链接中遇到此属性,其行为都会相同。它已经过测试,您无需在网站上对其进行重新测试。

但是,您仍然可能需要测试目标内容是否已加载或链接是否符合您的期望。可以,但是您不需要多个选项卡。以下情况是有道理的:

  1. 检查链接是否具有target="_blank"属性:
test             
    ('Check Target Attr',async t => {
        
        await t
            .expect(Selector('.c-cookie-bar__text-link').withAttribute('target','_blank').exists)
                .ok();
});
  1. 检查href属性是否应为:
test             
    ('Check Href Attr',async t => {
        
        await t
            .expect(Selector('.c-cookie-bar__text-link').getAttribute('href'))
                .eql('/private-data-info');
});
  1. 检查内容是否在同一标签中加载:
import getBaseUrl from '../Helpers/baseUrl';
import { Selector } from 'testcafe';

const baseUrl = getBaseUrl();

fixture `Link Handling`    
    .page(baseUrl); 

test             
    ('Go To Resource',async t => {
        
        const resource = await Selector('.c-cookie-bar__text-link')
            .getAttribute('href');
        await t
            .navigateTo(baseUrl + resource);
            // possibly some other assertions follow
});
  1. 检查http状态代码(我在这里使用axios,但在我的示例中并非全部可见):
import getBaseUrl from '../Helpers/baseUrl';
import { Selector } from 'testcafe';
import request from '../Helpers/networkRequest';

const baseUrl = getBaseUrl();

fixture `Link Handling`    
    .page(baseUrl);   

test             
    ('Check Status Code',async t => {
        
        const resource = await Selector('.c-cookie-bar__text-link')
            .getAttribute('href');
        const networkReq = await request({
            method: 'GET',url: baseUrl + resource
        });

        await t
            .expect(networkReq.status).eql(200);
});

如果您实际上忽略了所有这些,只需单击TestCafe中的链接:

await t
    .click(Selector('.c-cookie-bar__text-link'));

它将在新窗口中打开,如下所示:

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?