2013-06-05 62 views
5

我在頁面上有一個ExtJs文本字段。我在casper.js中填充了一些值,工作正常。
然後我想要關注此字段並按輸入鍵,因爲它沒有<form>提交。casper.js:在ExtJs輸入字段中按「Enter」鍵

我想什麼:

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。那麼需要確保異步序列正常工作。

第二:這可能是一個客戶端JS問題。在瀏覽器中,你可以檢查js控制檯,但不在這裏。所以你應該添加一些調試幫手。

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

這會將您的遠程控制檯消息傳輸給您的控制檯。現在您可以使用console.log()調試遠程上下文,並查看它在哪裏(以及如果)中斷。

你也應該設置verbose=truelogLevel="debug"這個工作。

祝你好運!

+0

謝謝您的回答和我的延遲抱歉。我認爲問題不在casper級別,但它甚至不在正常的瀏覽器窗口(Chrome)中。 –

1

代碼

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

看第四PARAM,我想這應該是觸發因素。這裏應該是document.querySelector('#searchfield')

一個提示:在casper評估中,在final中返回一個true,如果在評估中有任何錯誤,那麼您將得到null。

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

檢查的結果,如果成功

+0

感謝您的回覆。第四個參數是'viewArg',通常只是'window'對象。更改它爲我的元素不會改變任何東西,不幸的是。它只是沒有被按下。 –

+2

我現在只用'\ n'發送回車鍵,試試這個'this.sendKeys('#searchfield','一些文本\ n');' –

相關問題