我想使用量角器在日历选择器中选择日期。下面是我在脚本中编写的代码片段:
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”块内写入的操作。我可以知道为什么它会返回“未定义”的值,而不是真或假吗?
如果需要进一步的详细信息,请与我们联系。
答案 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();
},