0

我正在使用 Leadfoot 实习生框架编写功能测试用例。测试用例:输入表单字段并单击一个按钮,该按钮将打开一个引导模式。我要做的就是验证模式上存在的元素的显示属性。

但是当我尝试通过 id 'viewBtn' 查找元素时,它找不到它并抛出: NoSuchElement: [POST http://localhost:4444/wd/hub/session/e23a975b60188479d599d2 43505ce9cb/element/0.1521919297986265-4/element / {"using":"id","value":"viewBtn tBtn"}] 没有这样的元素:无法找到元素:{"method":"id","selector":"viewBtn"}

define(function (require){
    var registerSuite = require('intern!object');
    var assert = require('intern/chai!assert');

    registerSuite({
        name:'Test Page',
        'Continue':function(){
            return this.remote
             .get(require.toUrl('http://sdfsdfs'))
             .setFindTimeout(5000)
            .findById('to')
            .click()
            .type('john')
            .end()                      
            .findById('from')
            .click()
            .type('man')            
            .end()          
            .findById('message')
            .click()
            .type('hello')
            .end()          
            .findByCssSelector("[name=formName]").findByClassName('btn')
            .click()
            .end()
            .setFindTimeout(5000)
            .findById('viewBtn')
            .isDisplayed()
            .then(function(text){
                assert.equal(text,'true','Not Displayed');
            })
        }
    });
})

;

为什么当元素中存在 id 时会引发错误。我也在每个find方法之后调用end方法。?

4

1 回答 1

1

看起来您可能没有在正确的上下文中进行搜索。end在下面的代码段中,两个 find 和 ) 之间只有一个findById。这意味着调用点的上下文findById('viewButton')是名称为“formName”的元素(因此findById仅在 name="formName" 元素内/下搜索),因为只有findByClassName调用结束:

.findByCssSelector("[name=formName]").findByClassName('btn')
.click()
.end()
.setFindTimeout(5000)
.findById('viewButton')

要搜索整个文档(假设这是意图),请调用end(2)结束这两个查找。

另外,请注意这setFindTimeout是持久的,因此您只需要调用一次,除非您要更改值。

于 2017-06-26T14:40:53.613 回答