execute_script
和execute_async_script
之间的区别。
在python-selenium中给出这个例子,进入pytest函数:
driver.get(url)
js = '''
var video = document.getElementById("myVideo");
video.onplaying=function() {
return "play";
};
'''
video_play = driver.execute_script(js)
assert video_play == "play"
结果是:
E AssertionError: assert None == 'play'
我错过了什么?我应该在js中使用execute_async和async / await函数吗?你能举几个例子来指点我吗?
答案 0 :(得分:3)
您需要使用异步脚本。
driver.get(url)
js = '''
var callback = arguments[arguments.length - 1];
var video = document.getElementById("myVideo");
video.onplaying=function() {
callback ("play");
};
setTimeout(function(){
callback("notplayed");
}, 2000);
'''
video_play = driver.execute_async_script(js)
assert video_play == "play"
以上内容是,如果没有返回notplayed
,则等待播放最多2秒钟。
请记住,在脚本完成之前,调用不会返回。因此,不要以为您可以在异步脚本之后执行其他代码。在回调或异步超时之前,代码将停留在execute_async_script