isEnabled()函数在Protractor中不起作用

时间:2018-05-18 11:33:41

标签: protractor

我想使用量角器在日历选择器中选择日期。下面是我在脚本中编写的代码片段:

if (dat <= 24) {
    var us_dat = element(by.xpath("(//a[text()='" + dat + "'])[1]"));
} else {
    var us_dat = element(by.xpath("(//a[text()='" + dat + "'])[1]"));
    if (us_dat.isEnabled() == false) {
        var us_dat = element(by.xpath("(//a[text()='" + dat + "'])[2]"));
    }
}

us_dat.click();
browser.sleep(1000);

其中dat是一个变量,我已经存储了日历选择器中需要选择的日期。

在调试过程中,我发现当日期大于24时,代码正在检查“else”块下的“if”块。但是,它返回undefined值,因此它跳过在“if”块内写入的操作。我可以知道为什么它会返回“未定义”的值,而不是真或假吗?

如果需要进一步的详细信息,请与我们联系。

2 个答案:

答案 0 :(得分:0)

因为所有Protractor的API都是异步并返回承诺。因此isEnabled()不直接返回Boolean值,您无法直接将其与布尔值进行比较。您应该在then()中进行比较或使用await

另外,您无需将{x}放入(),就像(//a[text()='click me'])一样。

var us_dat = element(by.xpath("//a[text()='" + dat + "'][1]"));

us_dat.isEnabled().then(function(enabled){
   if (dat > 24 && enabled=== false) {
       return element(by.xpath("//a[text()='" + dat + "'][2]"));
   } else {
       return us_dat;
   }     
})
.then(function(ele){
   ele.click();
   browser.sleep(1000);
});

答案 1 :(得分:-1)

try to use this method will work

isEnable: function (element) {
        return element.isEnabled();
    },