Javascript 当找不到原始元素时,如何单击另一个元素?
我创建了一个函数来随机选择付款(数字)。如果找不到第一个选择(编号)(尝试捕捉),则我想选择另一个 但我总是收到: 失败:无法读取属性“单击” 发送号码8时,应选择信用卡visa 我做错了什么?元素确实存在,id也正确:Javascript 当找不到原始元素时,如何单击另一个元素?,javascript,testing,protractor,try-catch,Javascript,Testing,Protractor,Try Catch,我创建了一个函数来随机选择付款(数字)。如果找不到第一个选择(编号)(尝试捕捉),则我想选择另一个 但我总是收到: 失败:无法读取属性“单击” 发送号码8时,应选择信用卡visa 我做错了什么?元素确实存在,id也正确: CheckoutPage3.prototype.selectPayment = function (number) { if (number == 1) { try { this.elementPaymentPaypal.clic
CheckoutPage3.prototype.selectPayment = function (number) {
if (number == 1) {
try {
this.elementPaymentPaypal.click().then(function () {
return 1;
}, function (err) {
console.log("payment not found, select new");
this.elementPaymentCreditCard.click();
this.elementCreditVISA.click();
number = 2;
});
}
catch (err) {
console.log('error occured');
}
}
else if (number == 2) {
this.elementPaymentCreditCard.click();
this.elementCreditVISA.click();
number = 2;
} else if (number == 3) {
this.elementPaymentCreditCard.click();
this.elementCreditMasterCard.click();
number = 3;
}
else if (number == 4) {
try {
this.elementPaymentCreditCard.click();
this.elementCreditAmericanExpress.click().then(function () {
number = 4;
}, function (err) {
console.log("payment not found, select new");
this.elementCreditVISA.click();
number = 2;
});
}
catch (err) {
console.log('error occured');
}
}
else {
try {
this.elementPrePayment.click().then(function () {
number = 5;
}, function (err) {
console.log("payment not found, select new");
this.elementPaymentCreditCard.click();
this.elementCreditVISA.click();
number = 2;
});
}
catch (err) {
console.log('error occured');
}
}
};
这是一个,在你的页面对象中,这个
并不总是你所期望的。例如,在此处的promise resolution函数中:
this.elementPaymentPaypal.click().then(function () {
return 1;
}, function (err) {
console.log("payment not found, select new");
this.elementPaymentCreditCard.click(); // < HERE
this.elementCreditVISA.click(); // < and HERE
number = 2;
});
然后使用self
而不是this
:
this.elementPaymentPaypal.click().then(function () {
return 1;
}, function (err) {
console.log("payment not found, select new");
self.elementPaymentCreditCard.click();
self.elementCreditVISA.click();
number = 2;
});
this.elementPaymentPaypal.click().then(function () {
return 1;
}, function (err) {
console.log("payment not found, select new");
self.elementPaymentCreditCard.click();
self.elementCreditVISA.click();
number = 2;
});