首页 > 解决方案 > isEnabled() 函数在量角器中不起作用

问题描述

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

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);

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

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

如果需要任何进一步的细节,请告诉我。

标签: protractor

解决方案


因为 Protractor 的所有 API 都是异步的并且返回 promise。所以isEnabled()不是直接返回Boolean值,你不能直接将它与布尔值进行比较。您应该在then()或使用中进行比较await

()另一件事,您无需将 xpath 放入(//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);
});

推荐阅读