【问题标题】:I receive Error Protocol(Runtime.callFunctionOn): Target closed when try to validate selectors on the page我收到错误协议(Runtime.callFunctionOn):尝试验证页面上的选择器时目标已关闭
【发布时间】:2019-09-07 13:18:15
【问题描述】:

我在 puppeteer-jest 框架上开发测试,并收到 Runtime.callFunctionOn 错误。功能问题 isOverviewTpabPresent、isPeopleTabPresent、isSocialTabPresent、isFinanceTabPresent

我在堆栈或官方 GitHub 存储库中看到了一些解决方案,但这无济于事。

测试:

    it(`${testcase.C673055.id} - ${testcase.C673055.name}`, async C673055 => {
        await goto(homePage, HOME_PAGE_RELATIVE_PATH);
        await listPage.clickAdvancedSearch(homePage);
        await takeScreenshot(homePage, `advancedSearchPage`);
        await advancedSearchPage.clickFinanceCategory(homePage);
        await takeScreenshot(homePage, `Finance_click`);
        await advancedSearchPage.clickFilter(homePage, `Company Size & Offices`);
        await takeScreenshot(homePage, `Open_CompanyFilter`);
        await advancedSearchPage.setHeadcount1k(homePage);
        await takeScreenshot(homePage, `Take_Filter_to_1K`);
        await advancedSearchPage.clickFilter(homePage, `Keywords`);
        await takeScreenshot(homePage, `Open_Keywords`);
        await advancedSearchPage.fillKeywords(homePage, companies.creditKarmaInc.name);
        await takeScreenshot(homePage, `Fill_Keywords`);
        await advancedSearchPage.clickViewCompanies(homePage);
        await companyPage.isOverviewTpabPresent(homePage);
        await takeScreenshot(homePage, `companyPage`);
        await companyPage.isPeopleTabPresent(homePage);
        await companyPage.isSocialTabPresent(homePage);
        await companyPage.isFinanceTabPresent(homePage);
        await homePage.close();

函数是OverviewPresent:

async function isOverviewTabPresent(page) {
    validatePageSelectorAvailable(page, companyPageLocators.overviewTab.locator);
}

功能验证:

async function validatePageSelectorAvailable(page, selector) {
    return expect(page).toMatchElement(selector);
}

我预计不会收到该错误,测试通过的结果应该是。

【问题讨论】:

  • 错误是什么? Runtime.callFunctionOn 上的错误往往是发送到 chromium 的 javascript 错误。
  • @hardkoded 是的,错误是:Error: Protocol error (Runtime.callFunctionOn): Target closed
  • 您发送的评估结果是什么?
  • 我想检查一个元素是否显示使用函数:expect(page).toMatchElement(selector);
  • 是错字吗? "isOverviewTpabPresent" 注意 Tpab。

标签: javascript jestjs puppeteer


【解决方案1】:

你不是在等待承诺完成。在 validatePageSelectorAvailable 函数调用之前返回承诺或添加等待。

async function isOverviewTabPresent(page) {
    await validatePageSelectorAvailable(page, companyPageLocators.overviewTab.locator);
}

检查您的其余代码是否具有未等待的此类承诺。 目标已关闭在您关闭浏览器/标签时显示,主要是因为没有等待承诺完成。

【讨论】:

  • 谢谢,已经成功了。我返回 Promises,这是没有错误的工作。
猜你喜欢
  • 2018-11-11
  • 1970-01-01
  • 2018-04-27
  • 2019-01-08
  • 2019-07-02
  • 1970-01-01
  • 2021-02-27
  • 2018-11-10
  • 2020-04-11
相关资源
最近更新 更多