无法使用超出承诺的价值

时间:2016-08-16 07:40:14

标签: promise protractor gettext

我正在进行一项测试,检测不同选择条目(此处为:车辆)的信息,并检查此车辆是否可以订购产品。

价格和名称的价值可以是" generalData"对象,但不是所选车辆的名称和状态......

var TestData = require('./testdata.js');
var TD = new TestData();
var generalData = TD.generalData;

(doing logging, open page)
                    PDP.elementPrice.getText().then(function (value) {
                        value = value.replace(/[^0-9\.,-]+/g, "");
                        generalData.articleData.price = value;
                        console.log(value);
                    });
                    PDP.elementArticleNumber.getText().then(function (value) {
                        generalData.articleData.number = value;
                        console.log(value);
                    });

从这里开始,没有值保存到GeneralData对象

    PDP.elementCarList.count().then(function (value) {
                                console.log("Fahrzeuge: " + value);
                                vehicles = parseInt(value, 16);
                                for (var car = 0; car < vehicles; ++car) {
                                    console.log(car);


PDP.elementCarList.get(car).getAttribute("data-testid").then(function (value) {
                                            value = value.split("-").pop();
                                            generalData.articleData.fin = value
                                            console.log(value);
                                        });
                                        PDP.selectCar(car);
                                        PDP.elementSelectCar.getText().then(function (value) {
                                            generalData.articleData.vehicle = value;
                                            console.log(value);
                                        });                            PDP.elementStatus.getAttribute("class").then(function (value) {
                                            value = value.split("-").pop();
                                            generalData.articleData.status = value;
                                            console.log(value);
                                        });
                                        expect(PDP.elementStatus).toBeDefined();
                                        var options = buildSendOptions(generalData);
                                        request(options, callback);
                                    }
                                });

1 个答案:

答案 0 :(得分:1)

@jfriend00's explanation真的很棒。除此之外,这里有一个实际的例子,说明如何在Protractor中专门解决和使用多个promise:

getAs[String]

换句话说,操作并传递承诺。每当您需要实际值时 - 解决。

另见: