selenium执行js函数时无法运行提示不存在的问题

[scrapy] 2024-04-16 圈点587

摘要:selenium执行js函数时无法运行提示不存在的问题

selenium执行js函数时无法运行提示不存在的问题

selenium在执行的js中如果有函数,此函数将无法运行,然后提示错误不存在,但实际是存在的js。而手动加载进去是可以运行的,而自动无法运行。

示例:

from selenium import webdriver

f = webdriver.Firefox()

f.execute_script("function a(){alert(1)}")

f.execute_script("a()")

会提示不存在


解决问题的思路:

其实就是selenium加载js的机制理解问题,在Selenium在后台会将JavaScript代码包装在一个匿名函数中。

因此自定义的函数是此匿名函数的本地函数。

处理办法:使其全局化,则其分配给window:

修改对应的自定义JS函数代码如下:

f.execute_script("window.a =function(){alert(1)}")

f.execute_script("a()")


selenium  

感谢反馈,已提交成功,审核后即会显示