में तत्व विशेषता मान प्राप्त करें मैं एक प्रोटैक्टर परीक्षण लिख रहा हूं जिसे एक तत्व विशेषता के लिए एक खाली मूल्य होने का इंतजार करना है और फिर मैं उस मान को कॉलर फ़ंक्शन पर वापस करना चाहता हूं। यह अपेक्षा की तुलना में लिखना अधिक कठिन साबित हुआ है!प्रोटैक्टर
मैं तत्व विशेषता को गैर-खाली मान रखने के लिए प्रतीक्षा करने के लिए browser.wait()
कमांड को सही ढंग से शेड्यूल करने में सक्षम हूं और मैंने सत्यापित किया है कि यह मान वास्तव में कॉलबैक फ़ंक्शन के अंदर आने की अपेक्षा कर रहा है, लेकिन कुछ के लिए कारण, मैं कॉलबैक फ़ंक्शन के बाहर और शेष टेस्ट कोड पर उस मान को वापस करने में सक्षम नहीं हूं।
function test() {
var item = getItem();
console.log(item);
}
function getItem() {
var item;
browser.wait(function() {
return element(by.id('element-id')).getAttribute('attribute-name').then(function(value) {
item = value;
// console.log(item);
return value !== '';
});
});
return item;
}
मैं बता सकता है कि निष्पादन के आदेश मैं इसे होने की उम्मीद के रूप में, क्योंकि जब मैं कॉलबैक फ़ंक्शन के अंदर console.log()
कॉल uncomment, मैं देख नहीं है:
यहाँ कैसे मेरे कोड लगता है कि है अनुमानित मूल्य मुद्रित। हालांकि, test()
फ़ंक्शन प्रिंट्स में एक ही कॉल 'अपरिभाषित' प्रिंट करता है।
यहां क्या हो रहा है? मैं क्या खो रहा हूँ? मैं कॉलबैक फ़ंक्शन से विशेषता मान को ठीक से कैसे प्राप्त कर सकता हूं?
मैं आपकी मदद की सराहना करता हूं।
धन्यवाद! कुछ मामूली सुधारों के साथ, आखिरी दृष्टिकोण मेरे मामले में काम करता है। मैं उम्मीद कर रहा था कि आइटम मूल्य सीधे कॉलर फ़ंक्शन पर वापस लौटने में सक्षम हो, लेकिन स्पष्ट रूप से यह अतुल्यकालिक कॉल में वादे के बारे में सोचने का सही तरीका नहीं है। अंतिम पंक्ति 'वापसी आइटम' प्रमोम होना चाहिए; '। – exbuddha