最近在新公司電腦上跑以前的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這些有利工具,将所有搜尋到的資訊進行綜合考慮,最終得到解決方案。