selenium 执行js后拿不到返回值的原因
1.js代码报错,可以把代码放到浏览器控制台中执行查看具体报错信息;
2.如果js中使用了ajax调用,最后return出去请求的结果值,记得把参数async设置为false;async默认设置为true,如果你的返回结果在请求的后面程序不会等待ajax请求返回就会执行完毕,会直接执行ajax后面的语句进行返回。
下面看一个简单的示例:
js = """
function getdata(){
var result;
$.ajax({
url:'url',
type:'post',
data:"参数",
async:false,
success:function(res){
result = res;
},error:function(err){
console.log('err')
}
});
return result;
}
return getdata();
"""
get_data = browser.execute_script(js);