2017-09-03 85 views
0

对我来说不是很清楚硒在execute_scriptexecute_async_script之间的区别。python-selenium:execute_script vs execute_async

使用python-硒这个例子中,成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' 

我失去了什么?我应该使用execute_async和JS异步/ AWAIT功能?你能指点一些例子吗?

回答

2

您需要使用异步脚本这一点。

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" 

什么上面做的是等待2秒最大的回放如果没有,则返回notplayed发生。

请记住,在脚本完成之前,调用不会返回。所以不要以为你可以在异步脚本之后执行一些其他的代码。直到回调或异步超时,代码将在execute_async_script

被卡住
相关问题