2015-04-14 106 views
1

測試場景是,選項中,無法選擇

  1. 創造一個細胞,
  2. 變化,從下拉菜單中(從r到Python)的語言,
  3. 輸入驗證碼和執行它。對於下拉菜單中的HTML代碼是
<select class="form-control cell-control-select cell-control"> 
    <option>Markdown</option> 
    <option>R</option> 
    <option>Python</option> 
    <option>RMarkdown</option> 
</select> 

以下是我casperjs代碼

casper.then(function(){ 
    this.mouse.click({ type: 'xpath' , path: "/html/body/div[3]/div/div[2]/div/div[3]/div[1]/div/select"});//x path for dropdown menu 
    this.echo('clicking on dropdown menu'); 
    this.wait(3000); 
}); 

casper.then(function(){ 
    var z = this.evaluate(function() { 
    document.querySelector('.form-control').selectedIndex = 2; 
    return true; 
    }); 
    this.wait(3000); 
}); 

它是選擇從下拉菜單中的Python語言,但是當我們運行代碼是在提示單元格中顯示錯誤。我們在Python語言單元格中運行R代碼時得到的錯誤。

+0

什麼錯誤,你看到了什麼?更改選定的索引後,是否顯示在截取屏幕時選擇了「Python」?選擇框可能是隱藏的,實際的下拉菜單是用HTML + CSS + JS實現的嗎? –

+0

雅它在下拉菜單中顯示「Python」。我使用的只是簡單的Python代碼,這是一個= 50;打印一個。當它被執行時(Python在下拉菜單中被選中),它顯示'分析錯誤::1:12:意外符號1:a = 50;打印'錯誤。當我們在R. – GANA

回答

1

問題可能是在選擇框上沒有被調用的更改偵聽器,因爲設置selectedIndex屬性不會觸發更改。

來觸發這個變化的可靠的方法是使用jQuery's change()

this.evaluate(function() { 
    var form = document.querySelector('.form-control'); 
    form.selectedIndex = 2; 
    $(form).change(); 
}); 

如果您還沒有jQuery的頁面,你可以注入像這樣,如果你有本地的jQuery:

var casper = require('casper').create({ 
    clientScripts: [ "jquery.min.js" ] 
}); 

,或者如果你沒有在本地的更多信息:

var casper = require('casper').create({ 
    remoteScripts: [ "http://code.jquery.com/jquery-2.1.3.min.js" ] 
}); 
+0

上面解決方案中運行python代碼時發生這個錯誤......謝謝,但是在那之後,當我執行代碼時,應用程序變得沒有響應......並且沒有執行它就退出腳本。 – GANA

+0

謝謝上面的解決方案只有當我鍵入一些代碼,並且我改變了下拉菜單,但是當我在輸入代碼之前更改下拉值時,它開始執行空單元格。它不會去代碼的下一行,這是將代碼添加到單元格 – GANA

+0

* *「解決方案中的*」代碼「*只有當我鍵入一些代碼時才起作用」*是什麼意思?你在談論需要在頁面上輸入的內容嗎?如果是,那麼我無法幫助你,因爲我不知道你正在談論的頁面。 –