我不太清楚execute_script和execute_async_script在硒方面的区别。
在中给出这个示例,将其转换为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和异步/等待函数吗?你能给我举几个例子吗?
发布于 2017-09-03 09:37:32
为此,您需要使用异步脚本。
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上。
https://stackoverflow.com/questions/46021802
复制相似问题