实习生 Leadfoot 有条件地运行命令

lac*_*acy 2 selenium intern

使用 Selenium 驱动程序,IE 在会话之间保持登录状态,而 FF 和 Chrome 则不然。我想根据“已登录”元素 ID 的存在在测试中执行一些附加命令。

如何根据实习生中的条件执行代码?

伪代码:

return command
.get(require.toUrl('http://example.com/'))
.findById('signed-in-user')
.then(function(){
    command
        .findById('sign-out')
        .click()
})
Run Code Online (Sandbox Code Playgroud)

但是当登录用户不存在的情况下如何处理呢?

这是这个问题的重复:How to do Conditional browserInteractions with intern 但与 Intern 2 有关

lac*_*acy 5

我找到了一个解决方法,但它有点hacky。使用findAll命令,您可以测试是否找到任何元素(元素存在)并对其采取操作。

例子:

            // Log out if logged in
            .findAllByCssSelector('#signed-in-user')
                .then(function(elems) {
                    if(elems.length > 0) {
                        command
                        .findById('signed-in-user')
                            .click()
                            .end()
                        .findByLinkText('Sign out')
                            .click()
                            .end()
                    }
                    return true;
                })
                .end()
Run Code Online (Sandbox Code Playgroud)