chrome 无头浏览器中的 PDF url 验证失败 - protractor typescript f\w

Posted

技术标签:

【中文标题】chrome 无头浏览器中的 PDF url 验证失败 - protractor typescript f\\w【英文标题】:PDF url validation in chrome headless browser fails - protractor typescript f\wchrome 无头浏览器中的 PDF url 验证失败 - protractor typescript f\w 【发布时间】:2019-08-25 05:53:49 【问题描述】:

我正在尝试自动验证在新选项卡中打开的 pdf url 是否符合预期(url)。这是一个 Angular 应用程序,我们使用量角器-打字稿框架。

接下来的步骤如下: 1.点击pdf链接 2.Pdf 在同一浏览器窗口的新标签页中打开 3.获取所有窗口句柄 4.检查窗口句柄数是否>1 5.使用最后一个窗口句柄切换到新标签页 6.获取当前浏览器url 7.检查是否是预期的url

这是一个角度应用程序,pdf是非角度的

public async waitForWindowHandle() 

    browser.driver.wait(function () 
        return browser.getAllWindowHandles().then(function (handles) 
            if (handles.length > 1) 
                return true;
            
        );
    , 20000, 'Waited for window count to be greater than 1');



await browser.sleep(1000);
browser.ignoreSynchronization = true
wrapmeth.waitForWindowHandle();
browser.getAllWindowHandles().then(async function (handles) 
    expect(2, "pdf did not open in new Tab").to.equal(handles.length);
    browser.switchTo().window(handles[1]).then(async function () 
        currentUrl = await browser.getCurrentUrl();
    );
);

自动化在 chrome 浏览器中运行良好,但 promise 在 chrome 无头模式下超时。在第 4 步之后它不会继续。我们无法从新标签中获取 pdf 网址。任何非 pdf 网址都可以正常工作。请让我知道是否有人以前遇到过这样的问题并解决了。对此的任何输入都会有所帮助。感谢您的宝贵时间。

【问题讨论】:

【参考方案1】:

    尝试使用它:

    export async function countTabs () const allTabs = await browser.getAllWindowHandles(); const allTabsLength = allTabs.length; console.log('===my tabs count is --->> ' + await allTabsLength); return allTabsLength;

    使用 await/async 解决承诺

【讨论】:

我能够获取窗口句柄计数。无法获取在新标签页中打开的 pdf url

以上是关于chrome 无头浏览器中的 PDF url 验证失败 - protractor typescript f\w的主要内容,如果未能解决你的问题,请参考以下文章

Chrome 无头打印到 PDF 中的其他选项

切换选项卡时,带有无头 chrome 的 Selenium 无法获取 url

chrome headless 无头浏览器 应用

在无头打印到 PDF 中禁用 Chrome 的默认页眉和页脚

如何通过无头 chrome 管理登录会话?

用于无头和有头的 Webdriverio 的基本身份验证