gpt4 book ai didi

python Selenium : execute_script vs execute_async

转载 作者:行者123 更新时间:2023-12-02 20:41:22 25 4
gpt4 key购买 nike

我不太清楚selenium中execute_scriptexecute_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函数吗?你能给我举一些例子吗?

最佳答案

您需要为此使用异步脚本。

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

关于 python Selenium : execute_script vs execute_async,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46021802/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com