最近在新公司電腦上跑以前的selenium測試框架的時候,拋出了如下的錯誤
出現的是ODBC Driver問題:[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified
我查看了我的系統屬性 -- 64 bit System, Microsoft Excel -- 32 bit
而這個selenium框架之前都是運行在win7 32位系統上的,且框架腳本編譯之后也是32位的,所以初步判斷這與系統64位相關。
解決方案:
1. 下載32位的AccessDatabaseEngine.exe文件並安裝(默認安裝即可),由於我電腦上的Office是2010版本,所以需要下載2010版本的Access Data Engine。下載地址如下:
http://www.microsoft.com/en-us/download/details.aspx?id=13255
由於我的32位selenium框架移到了64位系統上運行,而32位編譯的項目在64位系統上運行需要有32位的驅動,並且系統上安裝的office也是32位的,故需要使用32位的AccessDatabaseEngine.exe驅動文件。
Description:
AccessDatabaseEngine.exe這個組件的作用是允許非 Microsoft Office 應用程序可以使用它們從 2010 Microsoft Office system 文件中讀取數據。例如從 Microsoft Office Access 2010(mdb 和 accdb)文件以及 Microsoft Office Excel 2010(xls、xlsx 和 xlsb)文件中讀取數據。這些組件還支持與 Microsoft Windows SharePoint Services 和文本文件建立連接。
此外,還會安裝 ODBC 和 OLEDB 驅動程序,供應用程序開發人員在開發與 Office 文件格式連接的應用程序時使用。
1)如果你是使用 OLEDB 的應用程序開發人員,請將 ConnectionString 屬性的 Provider 參數設置為“Microsoft.ACE.OLEDB.12.0”, 如果要連接到 Microsoft Office Excel 數據,請將“Excel 12.0”添加到 OLEDB 連接字符串的擴展屬性中。
2)如果你是使用 ODBC 連接到 Microsoft Office Access 數據的應用程序開發人員,請將連接字符串設置為“Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=path to mdb/accdb file”
如果你是使用 ODBC 連接到 Microsoft Office Excel 數據的應用程序開發人員,請將連接字符串設置為“Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=path to xls/xlsx/xlsm/xlsb file”
2. 對ODBC數據源進行配置
如果你打開ODBC管理器,由於系統是64位的,所以打開的也是64位版本的ODBC管理器。由於我的selenium框架是32位程序,它不能從64位的ODBC管理器中創建的DSN(Data Source Name)中找到相應的數據源,故會發生上面的錯誤。
而32位的ODBC Manager是在如下路徑的:C:\Windows\SysWOW64\odbcad32.exe
雙擊odbcad32.exe文件,將出現如下窗口:
點擊System DSN tab
點擊Add button添加數據源,選擇 Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)
最終添加System DNS如下:
最后點擊OK就配置成功了。
注意:最后一定要記得重啟下電腦之后再運行相應的應用程序。
通過以上的步驟,再去運行selenium框架中的代碼,就沒有拋錯,而是順利執行了。連接Microsoft Excel成功了。
總結:遇到問題還是需要抓住重點,反復排查,並且好好利用google, baidu這些有利工具,將所有搜索到的信息進行綜合考慮,最終得到解決方案。