当此代码单击“打印”-icon时,将生成一个PDF文件,并在新的浏览器选项卡中显示。我想切换到此选项卡,等待PDF在那里完成加载,检查URL的一部分,然后关闭该辅助选项卡。
it( "should open document as PDF-file in new browser-tab", async () => {
const mUrl = "TherapyReportForm/Export";
await mTherapyReportView.btnPrintform.click();
await browser.getAllWindowHandles().then(async (handles) => {
//if there is a secondary browser-tab open...
if (handles.length > 1) {
//...click on it
await browser.driver.switchTo().window(handles[1]);
}
});
//confirm that the url of the secondary tab matches the print-url pattern
await browser.sleep( 18000 );
expect( await browser.getCurrentUrl() ).toContain( mUrl );
await browser.getAllWindowHandles().then( async (handles) => {
//if there are multiple browser-tabs open
if (handles.length > 1) {
//close the secondary and move back to first
await browser.driver.close();
await browser.driver.switchTo().window( handles[0] );
}
} );
} );上面的测试运行得很可靠,除非我在chromes headless-mode模式下运行,否则测试运行会中断。
expect(await browser.getCurrentUrl()).toContain(mUrl);控制台输出证明它会切换到辅助选项卡,但显然从未尝试加载url。由于无法关闭此辅助选项卡,整个套件将在此时中断。
我做错了什么?
发布于 2020-06-30 05:19:09
有一件事..。下载功能在无头chrome中不可用。当然。下面我要说的是,我有点不确定是不是这样
浏览器中没有‘打开’pdf文件这样的东西。原因是浏览器实际上在幕后下载它(可能是临时的)。这就是为什么你永远不能在headless中做到这一点
但这只是一种冒险行为
https://stackoverflow.com/questions/62639014
复制相似问题