我有一个js文件,我想在网页中运行它。我在这个js文件中定义了很多变量和函数。我可以用execute_script(myScript)
运行代码,但当我这样做时,我不能在execute_script
中使用在以前的execute_script
中定义的任何变量或函数。
这是一个测试代码:
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://www.google.com")
driver.execute_script("let testVar = 10")
driver.execute_script("console.log(testVar)")
这就是错误:
selenium.com.mon.exceptions.JavascriptException:消息:javascript错误:未定义testVar
使用let test_var = 10
声明变量时,该变量将在脚本命名空间中定义,并在脚本完成时消失。
如果要保留该变量以供其他脚本使用,则必须将其锚定到文档名称空间。例如,您可以通过在文档实例上定义属性来实现这一点。如果您担心名称空间污染,可以通过向文档添加对象属性并将变量存储在该对象中来为脚本定义名称空间。
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://www.google.com")
driver.execute_script("document.testVar = 10")
driver.execute_script("console.log(document.testVar)")