元素常用验证方法
验证元素的值信息
andesFormSection .assert.containsText('@errorMessage', 'The email address is invalid.')
|
验证元素是否可用
andesFormSection .assert.attributeEquals('@continueBtn', 'disabled', 'true');
|
等待元素可用
andesFormSection .expect.element('@signInBtn').to.be.visible.before(5000);
andesFormSection waitForElementVisible('signInBtn', 5000);
|
等待元素呈现
andesFormSection .expect.element('@signInBtn').to.be.present.before(5000);
andesFormSection waitForElementPresent('signInBtn', 5000);
|
判断元素是否存在
用 Nightwatch 去判断一个 element 是否存在,如果存在执行如下操作,如果不存在做另外的操作。
这个在 Java 编写的自动化测试用例中可以用 try catch 可以解决,Nightwatch 试过不行。
另外看到 stackoverflow 上有通过判断 (result.status != -1),没有解决我的问题。
最后这样解决的,请看下面 tutorial.js
const tutorialCommands = { notShowTutorial: function() { const tutorialSection = this.section.tutorial; this.api.element('css selector', '.andes-dialog md-icon', function(result) { if (result.value && result.value.ELEMENT) { this.pause(2000); tutorialSection.click('@doNotShowBtn'); this.pause(2000); tutorialSection.click('@closeBtn'); } else { console.log('no tutorial exists'); } }); } };
module.exports = { commands: [tutorialCommands], url: function() { return `https://shenxianpeng.github.io/`; }, sections: { tutorial: { selector: '.andes-dialog', elements: { closeBtn: 'md-icon', doNotShowBtn: 'md-checkbox .md-container' } } } };
|
注意:这里的元素不能通过 section 的方式引用,例如这样,怀疑这是 Nightwatch 的 bug。
tutorialSection.api.element('css selector', '@closeBtn', function(result) {
}
|