我是 python 新手,注意到这段代码在编写时无需放入函数中即可工作。
from selenium import webdriver
driver = lambda: None
def setup_browser():
# unnecessary code removed
driver = webdriver.Firefox()
return driver
setup_browser()
driver.set_window_size(1000, 700)
driver.get("https://icanhazip.com/")
如上所示,我收到此错误:
`AttributeError: 'function' object has no attribute 'set_window_size'
我的阅读是驱动程序在调用之前没有被更新。这是为什么?
最佳答案
问题是 setup_browser()
内部您正在设置一个名为 driver
的局部变量,但您没有修改全局变量 driver
。为此,您需要使用 global
关键字:
def setup_browser():
global driver
driver = webdriver.Firefox()
return driver
但是,覆盖 driver
全局变量并同时返回它是多余的。最好不要定义 driver
全局作为空函数,但直接分配它。例如,
from selenium import webdriver
def setup_browser():
driver = webdriver.Firefox()
return driver
driver = setup_browser()
driver.set_window_size(1000, 700)
driver.get("https://icanhazip.com/")
关于当变量/方法放置在函数内部时,Python 2.7 的作用域问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49331484/