我需要检查页面标题是否包含“主页”。
我尝试以下方法
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');
似乎只有可见元素才能被测试,所以我不确定如何检查隐藏的内容。
答案 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');
startWith
和endWith
也可以通过这种方式使用,甚至进行正则表达式检查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
};