使用 NightwatchJS 测试页面标题

Test page title with NightwatchJS

我需要检查页面标题是否包含 "Homepage"。

我尝试以下 browser.expect.element('title').text.to.contain('Homepage'); 但返回时元素 title 总是空的。

任何其他元素都有效,但 title 似乎表现不同。如何检查子字符串?

例子:

作品:

browser
  .url('https://whosebug.com')
  .waitForElementVisible('body', 2000)
  .assert.title('Stack Overflow - Where Developers Learn, Share, & Build Careers');

无效:

browser
  .url('https://whosebug.com')
  .waitForElementVisible('body', 2000)
  .expect.element('title').text.to.contain('Developers');

输出:Expected element <title> text to contain: "Developers" - expected "contain 'Developers'" but got: ""

然而这有效:browser.expect.element('h1').text.to.contain('Learn, Share, Build');

似乎只能测试可见的元素,所以我不确定如何检查隐藏的元素。

only interacts with visible elements.

这个有效:

   browser.getTitle(function(title) {
     this.assert.ok(title.includes("Homepage"));
   });

nightwatch 中似乎添加了标题方法

使用断言,您可以检查整个标题 https://nightwatchjs.org/api/#assert-title browser.assert.title("Nightwatch.js");

使用expect,可以检查一部分 https://nightwatchjs.org/api/expect/#expect-title- browser.expect.title().to.contain('value'); startWithendWith 也可用这种方式,甚至正则表达式检查 browser.expect.title().to.match(/value/);

我们已经创建了可以在应用程序中使用的通用命令 before() 将在 assert

失败之前等待超时设置
exports.command = function waitForTitleContains(pageTitle) {
   this.expect
    .title().to.contain(pageTitle)
    .before(); //defaults to waitForConditionTimeout from nightwatch.conf
};