我正在尝试在Mocha中编写一组自动化测试来测试节点Web应用程序。
我制作了一个自定义的wait方法,以使webdriver等待输入框或文本区域包含sendKeys()方法发送的文本,然后再进行检查。
我在获取自定义的wait方法以实际返回我想要的值时遇到麻烦。
function waitForAttributeValue(element, attribute, value)
{
return element.getAttribute(attribute).then(result =>
{
if(result === value)
return result;
else
return false;
});
}
然后我像这样放置一个等待:
let result = this.driver.wait(waitForAttributeValue(element, 'value', 'hello'), 4000);
结果有时会返回我期望的值(在这种情况下为“ hello”),有时会返回false,这会导致我的测试失败。
要定义自定义条件,只需使用以下命令调用WebDriver.wait 最终将返回真实值的函数(既不为null, undefined,false,0或空字符串)
是否缺少某些内容,或者我误解了文档?
此外,我正在使用: 节点v.8.11.3和Selenium节点软件包v.4.0.0-alpha.1
非常感谢您提出任何建议。
答案 0 :(得分:0)
driver.wait()
期望函数作为参数,但是您传入了Promise。
您应该更改函数waitForAttributeValue
以返回如下函数:
function waitForAttributeValue(element, attribute, value) {
return function () {
return element.getAttribute(attribute).then(result => {
if (result === value)
// return result; recommend to return true as here
// because empty string will be treated as False
return true;
else
return false;
// or you cam simply return result === value to avoid
// using if/else.
return result === value;
});
};
}