Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Selenium TestNG正在跳过该方法";MakemytripHome“;虽然没有依赖关系。为什么不执行?_Selenium_Selenium Webdriver_Testng_Testng Dataprovider - Fatal编程技术网

Selenium TestNG正在跳过该方法";MakemytripHome“;虽然没有依赖关系。为什么不执行?

Selenium TestNG正在跳过该方法";MakemytripHome“;虽然没有依赖关系。为什么不执行?,selenium,selenium-webdriver,testng,testng-dataprovider,Selenium,Selenium Webdriver,Testng,Testng Dataprovider,我已经使用TestNG编写了以下测试用例,但是它跳过了MakemyTrip测试用例。我不知道为什么。没有依赖关系,测试数据保持在正确的路径上 为什么TestNG不执行它 public class Secattempt { static FileInputStream fis; static XSSFWorkbook workbook; static XSSFSheet sheet; static XSSFRow row; static XSSFCell c

我已经使用TestNG编写了以下测试用例,但是它跳过了MakemyTrip测试用例。我不知道为什么。没有依赖关系,测试数据保持在正确的路径上

为什么TestNG不执行它

public class Secattempt {
    static FileInputStream fis;
    static XSSFWorkbook workbook;
    static XSSFSheet sheet;
    static XSSFRow row;
    static XSSFCell cell;

    @Test(dataProvider = "getData")
    public void MakemytripHome(String departCity, String destCity, String browser) throws AWTException {
        Robot robo = new Robot();
        WebDriver driver;

        if (browser.equals("firefox")) {
            driver = new FirefoxDriver();
        } else {
            System.setProperty("webdriver.chrome.driver", "D:\\selenium\\chromedriver_win32\\chromedriver.exe");
            driver = new ChromeDriver();
        }

        driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
        driver.get("http://www.makemytrip.com/");

        WebElement Depart = driver.findElement(By.id("from_typeahead1"));
        WebElement Dest = driver.findElement(By.id("to_typeahead1"));
        Depart.clear();
        Depart.sendKeys(departCity);
        robo.keyPress(KeyEvent.VK_ENTER);
        Dest.sendKeys(destCity);
        robo.keyPress(KeyEvent.VK_ENTER);
        driver.findElement(By.id("flights_submit")).click();
    }

    @SuppressWarnings("null")
    @DataProvider
    public Object[][] getData() throws IOException {
        Object data[][] = null;
        fis = new FileInputStream("D:\\selenium\\data.xlsx");
        workbook = new XSSFWorkbook(fis);
        sheet = workbook.getSheetAt(0);
        row = sheet.getRow(1);

        int rowcount = sheet.getLastRowNum() - sheet.getFirstRowNum() + 1;
        int colcount = row.getLastCellNum();

        for (int rnum = 2; rnum <= rowcount; rnum++) {
            row = sheet.getRow(rnum);
            for (int cnum = 0; cnum < colcount; cnum++) {
                cell = row.getCell(cnum);
                data[rnum - 2][cnum] = cell.getStringCellValue();
            }
        }

        return data;
    }
}
公共类{
静态文件输入流fis;
静态XSSF工作簿;
静态XSSF表;
静态XSSFRow行;
静态XSSFCell电池;
@测试(dataProvider=“getData”)
public void MakemytripHome(字符串departCity、字符串destCity、字符串浏览器)引发AWTException{
机器人机器人=新机器人();
网络驱动程序;
if(browser.equals(“firefox”)){
驱动程序=新的FirefoxDriver();
}否则{
System.setProperty(“webdriver.chrome.driver”,“D:\\selenium\\chromedriver\u win32\\chromedriver.exe”);
驱动程序=新的ChromeDriver();
}
driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS);
驱动程序。获取(“http://www.makemytrip.com/");
WebElement Depart=driver.findElement(By.id(“from_typeahead1”);
WebElement Dest=driver.findElement(By.id(“to_typeahead1”);
离开;
出发。发送钥匙(出发城市);
机器人按键(KeyEvent.VK_ENTER);
目的地发送键(目的地城市);
机器人按键(KeyEvent.VK_ENTER);
driver.findElement(By.id(“航班提交”))。单击();
}
@抑制警告(“空”)
@数据提供者
公共对象[][]getData()引发IOException{
对象数据[][]=null;
fis=新文件输入流(“D:\\selenium\\data.xlsx”);
工作簿=新XSSF工作簿(fis);
工作表=工作簿。getSheetAt(0);
行=表。获取行(1);
int rowcount=sheet.getLastRowNum()-sheet.getFirstRowNum()+1;
int colcount=row.getLastCellNum();

for(int rnum=2;rnum我认为这是因为您没有初始化数据对象。这就是数据为空的原因。在for循环之前使用下面的一个

  data=new Object[rowcount][colcount];
请删除此@SuppressWarnings(“null”),它将在没有上述代码的情况下将数据显示为null。与其抑制,不如找出问题所在

谢谢,,
Murali

您试图从数据提供程序返回Null,因为数据[][]未初始化为任何内容。您需要使用以下代码:

Object data[][] = null;
        fis = new FileInputStream("D:\\selenium\\data.xlsx");
        workbook = new XSSFWorkbook(fis);
        sheet = workbook.getSheetAt(0);
        row = sheet.getRow(1);

        int rowcount = sheet.getLastRowNum() - sheet.getFirstRowNum() + 1;
        int colcount = row.getLastCellNum();
        data=new Object[rowcount][colcount];
        for (int rnum = 2; rnum <= rowcount; rnum++) {
            row = sheet.getRow(rnum);
            for (int cnum = 0; cnum < colcount; cnum++) {
                cell = row.getCell(cnum);
                data[rnum - 2][cnum] = cell.getStringCellValue();
            }
        }

        return data;
对象数据[][]=null;
fis=新文件输入流(“D:\\selenium\\data.xlsx”);
工作簿=新XSSF工作簿(fis);
工作表=工作簿。getSheetAt(0);
行=表。获取行(1);
int rowcount=sheet.getLastRowNum()-sheet.getFirstRowNum()+1;
int colcount=row.getLastCellNum();
数据=新对象[rowcount][colcount];

对于(int rnum=2;rnum)如果是这样的话,您将得到一个NPE(我得到了),而不是一个被忽略的测试。只有当数据集为空时才会发生这种情况。