2012-11-20 28 views
1

我正在運行一個selenium Web Driver項目。我將Excel表作爲我的測試用例的輸入。我得到以下錯誤Selenium Web驅動程序:MalformedByteSequenceException 2字節UTF-8序列的無效字節2

org.testng.TestNGException: com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: Invalid byte 2 of 2-byte UTF-8 sequence. 
at org.testng.TestNG.initializeSuitesAndJarFile(TestNG.java:340) 
at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:88) 
at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:204) 
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:175) Caused by: com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: Invalid byte 2 of 2-byte UTF-8 sequence. 
at com.sun.org.apache.xerces.internal.impl.io.UTF8Reader.invalidByte(Unknown Source) 
at com.sun.org.apache.xerces.internal.impl.io.UTF8Reader.read(Unknown Source) 
at com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.load(Unknown Source) 
at com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.arrangeCapacity(Unknown Source) 
at com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.skipString(Unknown Source) 
at com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(Unknown Source) 
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source) 
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source) 
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source) 
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source) 
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source) 
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.parse(Unknown Source) 
at javax.xml.parsers.SAXParser.parse(Unknown Source) 
at org.testng.xml.SuiteXmlParser.parse(SuiteXmlParser.java:17) 
at org.testng.xml.SuiteXmlParser.parse(SuiteXmlParser.java:10) 
at org.testng.xml.Parser.parse(Parser.java:172) 
at org.testng.TestNG.initializeSuitesAndJarFile(TestNG.java:310) 
... 3 more 

有人可以幫助我這個錯誤。 由於

爲Excel片驅動器中的代碼是

package com.bigMachines.TCL.ExcelShhetDataProvider; 
import java.io.File; 
import java.io.IOException; 
import java.util.HashMap; 
import java.util.Set; 
import org.testng.Assert; 
import jxl.Sheet; 
import jxl.Workbook; 
import jxl.read.biff.BiffException; 

public class ExcelSheetDriver { 

    private Sheet wrksheet; 
    private Workbook wrkbook =null; 
    private HashMap<String, Integer> dict= new HashMap<String, Integer>(); 
    //Create a Constructor 
    public ExcelSheetDriver(String ExcelSheetPath){ 
     try { 
      wrkbook = Workbook.getWorkbook(new File(ExcelSheetPath)); 
      wrksheet = wrkbook.getSheet(0); 
      columnDictionary(); 
     } catch (BiffException e) { 
      Assert.fail(e.getMessage()); 
     } catch (IOException e) { 
      Assert.fail(e.getMessage()); 
     } 
    } 

    //Returns the Number of Rows 
    public int rowCount() 
    { 
     return wrksheet.getRows(); 
    } 

    //Returns the Cell value by taking row and Column values as argument 
    public String readCell(int column,int row) 
    { 
     return wrksheet.getCell(column,row).getContents(); 
    } 

    public String readCell(String columnName,int row) 
    { 
     return readCell(getColumnNo(columnName), row); 
    } 

    //Create Column Dictionary to hold all the Column Names 
    private void columnDictionary() 
    { 
     //Iterate through all the columns in the Excel sheet and store the value in Hashtable 
     for(int col=0;col<wrksheet.getColumns();col++) 
     { 
      dict.put(readCell(col,0), col); 
     } 
    } 

    //Read Column Names 
    public int getColumnNo(String colName) 
    { 
     try { 
      int value; 
      value = ((Integer) dict.get(colName)).intValue(); 
      return value; 
     } catch (NullPointerException e) { 
      return (0); 

     } 
    } 
    public Set<String> getColumnNameList(){ 
     return dict.keySet(); 
    } 

} 

EDIT

到測試XML的聯繫是here

+2

顯示你的代碼是否給這個異常? –

+0

錯誤消息非常明確:「2字節UTF-8序列的無效字節2」。我想有一些編碼問題。如果你能顯示代碼,這將有所幫助。 – Haozhun

+0

@Abhi_Mishra可以ü請檢查編輯的代碼 – KingJames

回答

1

給定堆棧跟蹤,看起來問題實際上與您的代碼無關。它看起來像在用來設置測試套件的TestNG XML文件中。

檢查XML文件 - 我的猜測是它宣稱自己是UTF-8,但實際上是其他編碼。

+0

我檢查了XML文件。它有一個聲明,其中編碼是UTF-8。 – KingJames

+0

我現在需要做什麼?我應該刪除這種編碼? – KingJames

+0

@KingJames:不,你應該確保內容*在UTF-8中實際*。 (你沒有給我們指示你看過它的位置,或者編碼是什麼。) –

0

嘗試用其他jar替換現有的testng jar在你的項目中。

它看起來像解析TestNG XML文件時xml解析器導致此異常。

更新:

如果你使用eclipse:

Right click on xml file and go to Properties. 
There will be an option for Text File Encoding. 
Check that it is set as UTF-8. 
If not then made it as UTF-8. 

希望這會幫助你。

+0

我試着用另一個jar文件。它給了我同樣的錯誤。 – KingJames

+0

查看已更新的答案.. –

+0

它僅在默認情況下爲UTF-8。 – KingJames

0

雖然你的XML文件中有適當的聲明:

<?xml version="1.0" encoding="UTF-8"?> 

它不夠。 XML文件仍然可以以不同的方式編碼。下面是你應該嘗試什麼:

  1. 下載Notepad++(開源)

  2. 打開您的XML文件

  3. 單擊格式 - 編碼爲UTF-8。見屏幕: enter image description here

  4. 保存文件,然後再試一次

Ofcourse,你可以跳過1和使用您的首選trext編輯程序。我知道如何在Notepad ++中做到這一點,這就是爲什麼我提出這個解決方案

+0

我也試過這個..同樣的錯誤 這裏是XML文件的鏈接https://dl.dropbox.com/u/46023159/testng.xml – KingJames

相關問題