量角器 if (checkbox.isSelected()) 错误?

Protractor if (checkbox.isSelected()) bug?

给定以下代码:

if (element(by.name("checkbox")).isSelected()) {
    element(by.name("checkbox")).click();
}

无论之前是否选中它,它总是点击复选框,就像它无关紧要一样returns。我也试过

if (element(by.name("checkbox")).isSelected() == true) {
    element(by.name("checkbox")).click();
}

相同的结果。

但是当我把代码放在预期中时,它就像一个魅力...例如:

expect(element(by.name("checkbox")).isSelected().toBe(true));

给出正确答案,是否被选中。

这是 Protractor 的 bug 还是我做错了什么?

PS:我已经尝试 运行 selenium webdriver junit 中的类似代码,并且有效。

isSelected()returns一个承诺。您需要等待它完成:

element(by.name('checkbox')).isSelected().then(function(selected) {
    if (selected) {
        element(by.name('checkbox')).click();
    }
});