2013-06-05 6 views
5

मेरे पास एक पृष्ठ पर एक ExtJs टेक्स्ट फ़ील्ड है। मैं इसे casper.js में कुछ मूल्य के साथ भर रहा हूं, जो ठीक काम करता है।
फिर मैं इस क्षेत्र पर ध्यान केंद्रित करना चाहता हूं और कुंजी दर्ज करें, क्योंकि सबमिट करने के लिए <form> नहीं है।casper.js: एक ExtJs इनपुट फ़ील्ड में 0 "एंटर" दबाएं

मैं क्या करने की कोशिश की थी:

casper.then(function() { 
    // the text field is filled with the string 
    this.sendKeys('#searchfield', 'some text'); 

    this.evaluate(function() { 
    // this does not put the field in focus   
    document.querySelector('#searchfield').focus(); 

    // so 'pressing' enter has no effect at all 
    var evt = document.createEvent('KeyboardEvent'); 
    evt.initKeyboardEvent('keypress', true, true, window, 0, 0, 0, 0, 0, 13); 
    document.dispatchEvent(evt); 
    }); 
}); 

आप कैसे यह पूरा करने के लिए किसी भी विचार है?

उत्तर

0

2 सुझाव:

पहले: this.thenEvaluate बजाय evaluate प्रयास करें। तो यह सुनिश्चित करने के लिए आवश्यक है कि एसिंक अनुक्रम सही तरीके से काम करता है।

दूसरा: यह शायद एक ग्राहक जेएस मुद्दा हो सकता है। एक ब्राउज़र में आप बस जेएस कंसोल की जांच कर सकते हैं, लेकिन यहां नहीं। तो आपको थोड़ा डीबगिंग सहायक जोड़ना चाहिए।

casper.on('log.message', function(msg){ 
    console.log(msg); 
} 

जो आपके रिमोट कंसोल संदेश को आपके कंसोल में स्थानांतरित करेगा। अब आप दूरस्थ संदर्भ को console.log() से डीबग कर सकते हैं और देख सकते हैं कि (और अगर) यह टूटता है।

आपको काम करने के लिए verbose=true और logLevel="debug" भी सेट करना चाहिए।

शुभकामनाएं! चौथे परम पर

+0

अपने जवाब और मेरे देरी के लिए खेद के लिए धन्यवाद। मुझे लगा कि समस्या कैस्पर स्तर पर नहीं है, लेकिन यह सामान्य ब्राउजर विंडो (क्रोम) में भी नहीं है। –

1

अपने कोड

evt.initKeyboardEvent('keypress', true, true, window, 0, 0, 0, 0, 0, 13); 

देखो, मुझे लगता है यह ट्रिगर तत्व होना चाहिए। यहां document.querySelector('#searchfield') होना चाहिए।

एक संकेत: कैस्पर मूल्यांकन में, अंतिम में एक सत्य लौटाएं, और फिर मूल्यांकन में कोई त्रुटि होने पर आप शून्य हो जाएंगे।

var result = this.evaluate(function(){ /*code is here*/ return true;}) 

जांच परिणाम, अगर सफलता

+0

आपके उत्तर के लिए धन्यवाद। चौथा पैरामीटर 'viewArg' है और आमतौर पर केवल 'विंडो' ऑब्जेक्ट होता है। इसे मेरे तत्व में बदलना दुर्भाग्यवश कुछ भी नहीं बदलता है। यह सिर्फ दबाया नहीं जाता है। –

+2

अब मैं एंटर कुंजी भेजने के लिए '\ n' का उपयोग करता हूं, इसे' this.sendKeys ('# searchfield', 'कुछ टेक्स्ट \ n') आज़माएं; ' –

संबंधित मुद्दे