TestCafe:测试在新选项卡中打开PDF的页面

TestCafe:测试在新选项卡中打开PDF的页面,pdf,testing,automation,e2e-testing,testcafe,Pdf,Testing,Automation,E2e Testing,Testcafe,我正在测试的web应用程序的一部分是单击一个按钮,该按钮通常会在新选项卡中打开PDF。这使用户能够在应用程序中继续前进。PDF可以忽略 目前,我的策略是单击按钮,然后使用ClientFunction返回。单击按钮时,TestCafe成功打开PDF,但它在同一选项卡中打开,然后测试被卡住。向后导航会更改URL,但仍会显示PDF const goBack=ClientFunction(()=>window.history.back()) 等待此。t。单击(此。按钮) 等待这个。t.等待(10000

我正在测试的web应用程序的一部分是单击一个按钮,该按钮通常会在新选项卡中打开PDF。这使用户能够在应用程序中继续前进。PDF可以忽略

目前,我的策略是单击按钮,然后使用ClientFunction返回。单击按钮时,TestCafe成功打开PDF,但它在同一选项卡中打开,然后测试被卡住。向后导航会更改URL,但仍会显示PDF


const goBack=ClientFunction(()=>window.history.back())
等待此。t。单击(此。按钮)
等待这个。t.等待(10000)
等待戈巴克

TestCafe目前是否能够绕过这个问题,因为我实际上不需要对PDF做任何事情?

TestCafe允许测试html页面,但不允许测试PDF文件。因此,您可以将生成的PDF文件链接作为字符串进行检查,而无需实际遵循此链接。例如:

const overrideWindowOpen = ClientFunction(() => {
    window.open = function (url) {
        window.__lastWindowOpenUrl = url;
    };
});
const getResultUrl = ClientFunction(() => window.__lastWindowOpenUrl);

await overrideWindowOpen();
await t
    .click(this.button)
    .expect(getResultUrl()).eql('http://example.com/path/to/PDF/93023813-0984-1');

另请参见:

谢谢您的回答!你能把你的解释扩大一点吗?我是否能够阻止应用程序打开PDF,从而允许我通过访问PDF继续测试而不破坏它?嘿@Artem,您如何将实际的window.open函数保存为另一个ClientFunction中的备份?