我正在尝试使用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'
我正在做的有效吗?我怎么知道功能是否成功创建?如何查看错误(假设有错误)?
答案 0 :(得分:8)
这就是Selenium executes JavaScript:
的方式提供的脚本片段将作为匿名函数的主体执行。
实际上,您的代码是:
(function() {
function blah(a, b, c) {
...
}
})();
(function() {
blah(1, 2, 3);
});
由于JavaScript的范围规则,blah
在匿名函数之外不存在。你必须使它成为一个全局函数:
window.blah = function(a, b, c) {
...
}
或者在同一个函数调用中执行这两个脚本。