2013-10-06 4 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); 
}); 

인해 자바 스크립트의 범위 지정 규칙

, blah가 익명 함수의 외부에 존재하지 않습니다.

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

동일한 함수 호출에서 두 스크립트를 실행하거나 전역 함수로 만들어야합니다.

+0

감사합니다. 스크립트를 정의하고 동일한 execute_script 호출을 호출하면 효과가있었습니다. –

관련 문제