使用NightwatchJS测试页面标题

时间:2017-09-19 15:33:28

标签: nightwatch.js

我需要检查页面标题是否包含“主页”。

我尝试以下方法 browser.expect.element('title').text.to.contain('Homepage');但元素title总是空着。

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

示例

使用:

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

不起作用:

browser
  .url('https://stackoverflow.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');

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

3 个答案:

答案 0 :(得分:2)

Selenium only interacts with visible elements

这有效:

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

答案 1 :(得分:1)

似乎标题方法已添加到夜表中

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

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

答案 2 :(得分:0)

我们创建了通用命令,可以在应用程序中使用 在断言失败之前,before()将等待超时设置

exports.command = function waitForTitleContains(pageTitle) {
   this.expect
    .title().to.contain(pageTitle)
    .before(); //defaults to waitForConditionTimeout from nightwatch.conf
};