1

セレンWebドライバープロジェクトを実行しています。テストケースの入力としてExcelシートを使用しています。次のエラーが発生します

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();
    }

}

編集

テストXMLへのリンクはここにあります。

4

3 に答える 3

1

スタック トレースを考えると、問題は実際にはコードとは何の関係もないように見えます。テスト スイートのセットアップに使用している TestNG XML ファイルに含まれているようです。

その XML ファイルを確認してください。私の推測では、それ自体が UTF-8 であると宣言されていますが、実際には別のエンコーディングです。

于 2012-11-20T11:09:55.347 に答える
0

XMLファイルには適切な宣言がありますが:

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

足りません。XML ファイルは、別の方法でエンコードすることもできます。試してみるべきことは次のとおりです。

  1. Notepad++をダウンロード(オープンソース)

  2. XML ファイルを開く

  3. [フォーマット] - [UTF-8 でエンコード] をクリックします。画面を見る: ここに画像の説明を入力

  4. ファイルを保存して、もう一度やり直してください

もちろん、1 をスキップして、好みの trext 編集プログラムを使用することもできます。Notepad ++でそれを行う方法を知っているので、このソリューションを提案する理由

于 2012-11-20T12:25:20.807 に答える
0

プロジェクト内の testng の既存の jar を他の jar に置き換えてみてください。

TestNG XML ファイルの解析中に、xml パーサーがこの例外を引き起こしているようです。

更新しました:

日食を使用している場合:

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.

これがお役に立てば幸いです。

于 2012-11-20T11:47:20.130 に答える