2013-10-06 55 views
2

我想用Selenium創建和執行JavaScript函數。我這樣做是這樣的:用Selenium創建和執行Javascript函數

js_func = """ 
    function blah(a, b, c) { 
     . 
     . 
     . 
}; 
""" 
self.selenium.execute_script(js_script) 
self.selenium.execute_script("blah", 1,2,3) 

我不明白從第一個(創建函數)的任何錯誤,但第二個給我:

WebDriverException: Message: u'blah is not defined' 

是什麼我有效嗎?我如何判斷函數是否成功創建?我怎樣才能看到錯誤(假設有錯誤)?

回答

6

這只是如何Selenium executes JavaScript

提供的服務將作爲一個匿名函數體執行的腳本片段。

實際上,你的代碼是:

(function() { 
    function blah(a, b, c) { 
     ... 
    } 
})(); 

(function() { 
    blah(1, 2, 3); 
}); 

而且由於JavaScript的作用域規則,blah不匿名函數外部存在。您必須將其設置爲全局函數:

window.blah = function(a, b, c) { 
    ... 
} 

或者在同一函數調用中執行這兩個腳本。

+0

謝謝。定義腳本並調用相同的execute_script調用。 –