【发布时间】:2021-09-07 12:27:47
【问题描述】:
var = driver.execute_script("setTimeout(function(){ return [1,2,3]; }, 1000);")
使用Selenium 的函数execute_script,我正在尝试使用javascript 从网站中获取数据并将其传递给python 变量var,问题是javascript收集数据的代码大约需要 1 秒才能完成数据的收集(因为一些动画),所以当执行上面这行代码时,当时的正确值是 None(因为 javascript 代码没有' t 返回任何东西),但是,1 秒后,正确的值将更改为所需的数据,var 仍将是 None,因为这是分配给它的值。
请注意,这行代码运行良好,但这并不是我们真正需要的。
var = driver.execute_script("return [1,2,3];")
我有解决问题的办法,但我正在寻找更好的解决方案:
- 让javascript代码将数据下载到一个文件中,在
time.sleep为python代码之后,让var从该文件中获取数据 - 类似1,让javascript代码将数据推送到网站某处,在
time.sleep为python代码之后,让var从网站获取数据。 - 只使用原始的
Selenium代码,我不喜欢它,因为除了Selenium的基础知识我不知道
【问题讨论】:
-
我认为如果您使用原始 Selenium 显式等待,您将能够解决此问题。您问题的第三点
-
你可以使用 async / await 来做到这一点。
-
@Invizi 你能解释一下吗
标签: javascript python selenium