gpt4 book ai didi

javascript - Selenium Webdriver JavaScript : Promise seems to not be resolved

转载 作者:行者123 更新时间:2023-11-30 17:21:48 25 4
gpt4 key购买 nike

在我的项目中,为了测试列是否排序正确,我在 Javascript 中使用了 Selenium Webdriver。我想获取表格中的第一列,并查看我的字符串是否按顺序两两排序。这是我的代码:

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] }

据我所知,这似乎是一个尚未解决的 promise 。但是让我有点惊讶的是,通常情况下,“then”之后的函数只有在 promise 已被解决时才应该执行。

为了确保我对第一个元素放置了一个断言,在我的例子中它应该等于 26.. 并且断言通过了!我通过其他方式更改了值 26 以验证是否考虑了我的断言,实际上它对其他值失败了。我也为我的数组中的其他元素这样做了。

所以在这一点上,如果断言通过,则意味着 promise 实际上已解决,这就是为什么我不明白日志在我的循环中告诉我的内容。

我已经被这个问题困扰了很长时间,不知道为什么会显示一个 promise,我认为这也解释了我的比较失败的原因。

如果有人有想法,那将对我有很大帮助。

最佳答案

将 getText() 行的代码更改为

element.getText().then(function(textValue) {
assert(textValue).equalTo("foo");
});

或者,您可以将断言更改为 expect

expect(element.getText()).toEqual("foo");// write using Protractor/Jasmine

关于javascript - Selenium Webdriver JavaScript : Promise seems to not be resolved,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25027422/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com