5

Selenium で JavaScript 関数を作成して実行しようとしています。私はこのようにやっています:

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

最初のもの(関数の作成)からエラーは発生しませんが、2番目のものは次のようになります:

WebDriverException: Message: u'blah is not defined'

私がしていることは有効ですか?関数が正常に作成されたかどうかを確認するにはどうすればよいですか? エラーを確認するにはどうすればよいですか (エラーがあると仮定します)。

4

1 に答える 1

10

Selenium が JavaScript を実行する方法は次のとおりです。

提供されたスクリプト フラグメントは、無名関数の本体として実行されます。

実際には、コードは次のとおりです。

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

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

また、JavaScript のスコープ規則によりblah、その無名関数の外には存在しません。グローバル関数にする必要があります。

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

または、同じ関数呼び出しで両方のスクリプトを実行します。

于 2013-10-06T19:54:12.390 に答える