繁体   English   中英

.then()函数中的未定义变量

[英]Undefined variable in .then() function

我正在编写应该与滑块互动的量角器测试。 滑块控制输出美元值的字段。 该测试尝试沿x轴移动该条,直到返回$ 15,000的值。

我设法使滑块移动,但是它不遵守由数量变量设置的限制。 异步命令使我的生活更加艰难。

var dragSlider = function(amount) {
    element(by.css('.irs-single')).getText().then(function(text) {
        console.log(text)
        if (text !== amount) {
            browser.actions().dragAndDrop(element(by.css('.irs-slider.single')), {x:1, y:0}).perform();
            element(by.css('.irs-single')).getText().then(console.log(amount, text, amount===text)).then(dragSlider());
        }
    });
};

当我运行dragSlider("$15,000"); console.log(amount, text, amount===text)返回,例如:

$14,900
undefined '$14,900' false
$15,000
undefined '$15,000' false
$15,100
undefined '$15,100' false

您能否让我知道我在这里做错了什么?

您正在立即调用console.log() ,而不是将其传递给Promise.then()回调。

尝试更改:

element(by.css('.irs-single')).getText(text)
  .then(console.log(amount, text, amount===text))
  .then(dragSlider(text));

至:

element(by.css('.irs-single')).getText().then(dragSlider);

谢谢,全部。 @Bergi的权利。 我这傻傻的遗漏了! 更正了以下代码。

var dragSlider = function(amount) {
    element(by.css('.irs-single')).getText().then(function(text) {
        if (text !== amount) {
            browser.actions().dragAndDrop(element(by.css('.irs-slider.single')), {x:1, y:0}).perform();
            dragSlider(amount);
        }
    });
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM