Selenium Webdriver JavaScript: Promise似乎没有得到解决
Selenium Webdriver JavaScript : Promise seems to not be resolved
在我的项目中,为了测试一列是否排序良好,我在Javascript中使用了Selenium Webdriver。我想要得到表中的第一列,然后看看我的字符串是否按2乘2的顺序排序。下面是我的代码:
driver.findElements(webdriver.By.xpath("//table[@id='consentsTable']/tbody//td[1]")).then(function(id){
assert(id[0].getText()).equalTo("26");
for (var i = 0, l=id.length; i < l-1; i++) {
console.log(id[i].getText());
assert(id[i].getText()<id[i+1].getText()).isTrue();
}
});
我的问题是,我之间的比较不起作用。为了确保从findElements中得到什么,我放置了一个console.log。结果如下:
{ then: [Function: then], cancel: [Function: cancel], isPending: [Function: isPending] }
据我所知,这似乎是一个尚未解决的承诺。但是我有点惊讶的是,通常情况下,在"then"之后的函数应该只有在承诺被解决后才执行。
为了确保我对第一个元素进行了断言,在我的情况下应该等于26..断言通过了!我通过其他东西更改了值26,以验证我的断言是否被考虑,实际上它对其他值失败了。对于数组中的其他元素,我也这样做了。
所以在这一点上,如果assert通过,这意味着承诺实际上被解决了,这就是为什么我不明白日志在我的循环中告诉我什么。
我被这个问题困扰了很长时间,不知道为什么会显示一个承诺,我认为这也解释了为什么我的比较失败。
如果有人有主意,那对我来说将是一个巨大的帮助。
将getText()行代码更改为
element.getText().then(function(textValue) {
assert(textValue).equalTo("foo");
});
OR,您可以将assert更改为期望
expect(element.getText()).toEqual("foo");// write using Protractor/Jasmine
相关文章:
- 如何解决Yii中的页面刷新问题
- 测试Angular Service解决错误回调中的promise
- Selenium WebDriver and JavaScript change
- Webdriver.io pageObject模式-通过传递参数来定义元素选择器
- 如何解决Access Control Allow Origin错误
- 如何解决这种情况下的非法调用类型错误
- 简单的ES6承诺问题-交换解决和拒绝参数
- 可以转换显示属性吗?如果没有,什么'这是最好的解决方案
- iPad虚拟键盘-哪一个-javasctript解决方案
- 在ES6 Promise中,我应该在解决/拒绝之前使用return吗
- 如何解决“;错误所请求的URL返回500-内部服务器错误”;
- 如何逃离<脚本>jquery html()中的标记.我使用了innerHTML和outerHTML来解决这个
- 如何解决'窗口未定义'终端上的节点JS出错
- Angularjs:如何在使用'解决'在$routeProvider中
- 可以't解决Javascript错误
- AJAX HTTP基本身份验证解决方案
- 为什么不'我的窗口滚动事件根本没有启动.其他答案没有解决问题
- 如何解决此错误
- 在chrome web商店中打开时,是否有允许执行内容/后台脚本的解决方案
- Selenium Webdriver JavaScript: Promise似乎没有得到解决