[scrapy] 2024-09-16 圈点199
摘要: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()")