我正在为我们构建的具有“只读”功能的自定义下拉控件编写功能测试。我们为此提出的原始测试计划是确保在单击下拉列表时没有绘制“列表”,这是正常情况。在绘制之前,列表中的标记不存在。
功能测试如下:
'can respond to clicks while in read-only mode, but will not open the menu': function() {
return this.remote
.get(require.toUrl('/tests/dropdown/readonly'))
.setFindTimeout(10)
// Click the dropdown pseudo element
.findById('readonly-dropdown-shdo')
.click()
.end()
// attempt to find the dropdown list (should not exist because this is a "readonly" dropdown)
.findById('dropdown-list')
.then(function(element) {
expect(element).to.be.empty;
})
.end()
// Check the currently active element (should be the psuedo-element)
.getActiveElement()
.getAttribute('id')
.then(function(id) {
expect(id).to.equal('readonly-dropdown-shdo');
})
.end();
},
测试在.findById('dropdown-list')
处失败,因为Selenium正在抛出“NoSuchElement”异常,这是正确的,因为该元素不存在。问题是,就我所知,Intern的测试运行器会自动失败导致这些错误的测试,即使这种行为是预期的。
我的问题:是否有一种首选方式可以预期在特定时间页面上不应存在元素?
答案 0 :(得分:1)
您可以尝试使用findDisplayedById()
代替findById()
,如下所示:
.findDisplayedById('dropdown-list')
.then(...)
.catch(...)
.end()
答案 1 :(得分:-3)
不要检查那里应该是什么,检查那里应该是什么,即:你的伪元素。
(FWIW,我是你,我只是禁用下拉列表而不是交换元素。这样可以更容易测试并且在语义上仍然正确。禁用时下拉列表不会扩展。)