首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python: execute_script与execute_async

python: execute_script与execute_async
EN

Stack Overflow用户
提问于 2017-09-03 08:58:22
回答 1查看 2.2K关注 0票数 2

我不太清楚execute_scriptexecute_async_script在硒方面的区别。

在中给出这个示例,将其转换为pytest函数:

代码语言:javascript
复制
driver.get(url)

js = '''
var video = document.getElementById("myVideo");

video.onplaying=function() {
  return "play";
};
'''

video_play = driver.execute_script(js)
assert video_play == "play"

结果是:

代码语言:javascript
复制
E       AssertionError: assert None == 'play'

我遗漏了什么?我应该在js中使用execute_async和异步/等待函数吗?你能给我举几个例子吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-03 09:37:32

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

代码语言:javascript
复制
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上。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46021802

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档