Cypress - 子窗口

Cypress 没有专门用于处理子窗口的命令。它在 jQuery 中有一个变通方法,通过该方法可以处理子窗口。在 html 代码中,由于 target 属性的存在,链接或按钮会打开到子窗口。

如果 target 属性的值为空白,则会打开到子窗口。Cypress 使用 jQuery 方法 removeAttr,该方法由 Cypress 中的invoke 命令调用。 removeAttr 删除属性,该属性作为参数之一传递给invoke方法。

一旦删除target=blank,父窗口中就会打开一个链接/按钮,在对其执行操作后,我们可以使用go命令返回父URL。

Cypress中打开子窗口的Html代码如下−

打开新窗口

实现

下面给出了Cypress中子窗口命令的实现−

describe('Tutorialspoint', function () {
    // test case
    it('Scenario 1', function (){
        // url launch
        cy.visit("https://the-internet.herokuapp.com/windows")
        // 使用链接调用删除 target 属性
        cy.get('.example > a')
        .invoke('removeAttr', 'target').click()
        // 验证子窗口 url
        cy.url()
        .should('include', 'https://the-internet.herokuapp.com/windows/new')
        // 移至父窗口
        cy.go('back');
    });
});

执行结果

输出如下 −

New Window

输出日志显示删除了 target 属性并在父窗口内启动了子窗口。