如何将javascript async函数的返回值传递给python变量


var = driver.execute_script("setTimeout(function(){ return [1,2,3]; }, 1000);")

使用Seleniumexecute_script功能,我想获得数据的网站使用javascriptpython变量并将其传递给var,问题在于javascript收集数据的代码需要大约1秒完成收集数据(因为一些动画),所以当执行上面的代码行,当时正确的值是None(因为javascript代码没有回复任何东西),但是,1秒后正确的值将被更改为所需的数据,var仍然是None,因为这是赋给它的值。

请注意,这行代码运行良好,但这并不是真正需要的。

var = driver.execute_script("return [1,2,3];")

我有解决问题的办法,但我正在寻找更好的办法:

  1. 让javascript代码将数据下载到一个文件中,在python代码的time.sleep之后,让var从该文件中获取数据
  2. 与1类似,让javascript代码将数据推送到网站的某个地方,在python代码的time.sleep之后,让var从网站获取数据。
  3. 只是使用原始的Selenium代码,我不喜欢,因为我不知道Selenium的基础知识

有一个python库asyncio可以让你在python中使用async await。

import asyncio
import request
async def do_task():
response = await request("https://example.com")
return response.text

正如你在上面看到的,我们可以使用await来告诉python在继续之前等待这个值。

相关内容

  • 没有找到相关文章

最新更新