protractor - 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 的所有 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);
});
推荐阅读
- python - 如何在列的两个值之间选择数据框中的所有行
- vue.js - Vue js 和 VS 代码 - 绝对文件路径没有 Intellisense
- r - 基于各个子组的最后一个值的累积和
- abap - 如何一一选择表格行?
- java - intellij 重构类型迁移无任何作用
- gwt - GWT 以状态 1 退出
- node.js - 使用 node.js admin sdk 使用特定参数列出 firebase auth 用户
- angular - Angular 内存泄漏 Chrome 开发者工具
- php - 日期时间格式作为字符串而不是对象
- reactjs - ag-grid:“如何滚动到最后一个已知位置”?