You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flask集成Selenium ChromeDriver报错:无法解包非可迭代WebDriver对象

问题:TypeError: cannot unpack non-iterable WebDriver object

我正在开发一个Flask Web应用,使用Selenium ChromeDriver打开谷歌地图并根据用户输入搜索地点。在用户输入地点名称后,出现错误“TypeError: cannot unpack non-iterable WebDriver object”,报错提示问题出在bow.open_chrome()函数,但该函数仅用于打开Chrome WebDriver窗口。

路由代码(app.py)

@app.route('/testing', methods=['POST','GET'])
def testing():
        if request.method == "POST":
            nama_rm = request.form['nama_resto']
            print(nama_rm)
            aspek = ['makanan', 'minuman', 'pelayanan', 'tempat', 'harga']
            model_final = {}
            vectorizer_final = {}
            

            open_chrome, driver = bow.open_chrome()

            search_resto = bow.search_resto(nama_rm, driver)

            redirect_page = bow.redirect_reviewstab(driver)

            scroll_page = bow.scroll_reviewstab(driver)

            iterate_allreviews,  = bow.iteration_allreviews(driver)

            preprocess_input = bow.proses_df_input(df, vectorizer_final, model_final, aspek)

            return jsonify({'df':df})  

模型代码(bow模块)

def open_chrome():
    #London Victoria & Albert Museum URL
    driver = webdriver.Chrome(ChromeDriverManager().install())
    url = 'https://www.google.co.id/maps/@3.5508653,98.6270636,15z'
    driver.get(url)
    time.sleep(3)
    
    return driver
    
def search_resto(nama_resto, driver):
    # find the search bar element
    search_bar = driver.find_element(By.XPATH, '//*[@id="searchboxinput"]')

    # input the place name or address
    search_bar.send_keys(nama_resto)
    search_bar.send_keys(Keys.RETURN)
    time.sleep(5)

错误信息

File "e:\Folder Kuliah\Skripsi\Apps\webflask\Aplikasi\app.py", line 41, in testing open_chrome, driver = bow.open_chrome() TypeError: cannot unpack non-iterable WebDriver object
问题根源与解决方法
  • 问题根源:bow.open_chrome()仅返回一个WebDriver对象(driver),但你在调用时试图将其解包为两个变量open_chrome, driver,Python无法对单个对象执行多变量解包,因此触发TypeError。

  • 解决方法:

    1. 修改路由中的赋值语句,只接收返回的driver实例:
      driver = bow.open_chrome()
      
      不需要open_chrome变量,函数本身已经完成了打开浏览器的操作,返回值只有驱动对象。
    2. 修正iterate_allreviews, = bow.iteration_allreviews(driver)这一行:末尾的多余逗号会让Python尝试解包成单个元素的可迭代对象,如果该函数只返回一个值,应改为:
      iterate_allreviews = bow.iteration_allreviews(driver)
      
      否则后续会触发同类解包错误。

内容的提问来源于stack exchange,提问作者AlvinoViando

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 13:27:48