对来自测试外部文件的页面标题进行断言

Put an assertion on page title that is coming from a file outside the test

我想知道是否有人可以提供帮助。我有一个名为 Titles.js 的文件,它打印当前页面标题。我有另一个 AssertTitle.js 文件,我在其中从 Titles.js 文件获取页面标题,然后尝试声明该标题。两个文件的代码如下所示。

Titles.js 文件

  module.exports = {
  pageTitle: function() {
  let title;
  cy.get('h1').then(function($el) {
  cy.wrap($el);
  title = $el.text();
  console.log(title);
  });
  }
}

AssertTitle.js 文件

const titles = require('./Titles')
describe('testing titles', () => {
it('Print title', () => {
   cy.visit("http://www.qaclickacademy.com/practice.php");
   titles.pageTitle();
   expect(title).be.eq("Practice Page");
  });
})

断言失败,据我所知,因为它找不到标题。所以我正在寻找一些关于如何使这个断言起作用的建议或解决方法。

我假设断言失败是因为 title 没有在 AssertTitle.js 中定义。从我的角度来看,您的代码没有遵循 Cypress best practices。 使用 Titles.js 的原因是什么?验证您的 h1 非常简单:

it('validate h1', () => {
  cy.visit("http://www.qaclickacademy.com/practice.php")
  cy.get('h1').should('have.text', 'Practice Page')
})

如果您需要重用某些功能,请查看custom commands

我设法通过将 "user" 替换为 "userName" 并在 cypress.json 文件中添加 "instanceName" 来解决此问题。 Cypress.json 如下所示:

  "env": {
  "db": { "userName": "", "password": "", "server": "localhost", "port": 1433, 
  "type": "mssql",
  "options": {
    "instanceName": "",
    "database": "",
    "encrypt": true,
    "rowCollectionOnRequestCompletion": true
     }
    }
   }