2013-10-06 4 views
2

Я пытаюсь создать и выполнить функцию JavaScript с помощью Selenium. Я делаю это так:создание и выполнение функции Javascript с Selenium

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. –

Смежные вопросы