Selenium / TestNG:'无法使用Selenium Webdriver截取失败的测试用例

时间:2017-05-23 12:00:46

标签: java selenium selenium-webdriver automated-tests testng

我正在尝试编写一个模拟GMail登录的测试用例。尝试截取失败的测试用例的屏幕截图时,我收到以下错误: 附上完整的代码片段,无法截取屏幕截图保存屏幕截图。

显示错误:

  

FAILED CONFIGURATION:@AfterTest Fail_Test || java.lang.IllegalArgumentException:参数数量错误

代码段:

 @Test
    public void login_gmail() throws IOException, InterruptedException
    {
    System.setProperty("webdriver.chrome.driver", "C:/Users/neha.sharma/Downloads/chromedriver.exe");
    WebDriver drv=new ChromeDriver();
    drv.get("http://www.gmail.com");
    drv.findElement(By.id("identifierId")).sendKeys("nehasharma@gmail.com"); //USERNAME ENTRY
    Thread.sleep(6000);

    WebElement eleme = drv.findElement(By.xpath("html/body/div[1]/div[1]/div[2]/div[2]/form/div[2]/div/div[2]/div[1]/div[2]")); //NEXT BUTTON CLICK
     JavascriptExecutor executor = (JavascriptExecutor)drv;
     executor.executeScript("arguments[0].click();", eleme);
    Thread.sleep(2000);

    drv.findElement(By.xpath(".//*[@id='password']/div[1]/div/div[1]/input")).sendKeys("abcd234"); // PASSWORD ENTRY
    Thread.sleep(5000);
    //drv.findElement(By.xpath("html/body/div[1]/div[1]/div[2]/div[2]/form/div[2]/div/div/div[2]/div[1]/div[2]")).click();
    WebElement eleme2 = drv.findElement(By.xpath(".//*[@id='passwordNext']/content/span")); // NEXT BUTTON CLICK AFTER ENTERING PASSWORD
    JavascriptExecutor executor1 = (JavascriptExecutor)drv;
    executor1.executeScript("arguments[0].click();", eleme2);
    String Pass_Result= eleme2.getText();
    AssertJUnit.assertEquals(Pass_Result, "NEXT");
    Thread.sleep(2000);
    }

    @AfterTest
         void Fail_Test(ITestResult Result) throws IOException

    {

            if (ITestResult.FAILURE==Result.getStatus())
            {
                TakesScreenshot ts= (TakesScreenshot)drv;
                File Source=ts.getScreenshotAs(OutputType.FILE);
                FileUtils.copyFile(Source, new File("D:\\TestScreen.png"));
                System.out.print("Screenshot taken");
             }
    }

请帮我纠正此代码段。

2 个答案:

答案 0 :(得分:0)

我不知道我是否对,但我认为你需要传递值

void fail_test(String name,int name){

}

我认为您应该保留数据类型而不是名称,即String ITestResult

答案 1 :(得分:0)

@AfterMethod方法不允许

@AfterTest。但是有可能在@AfterMethod(我认为是你想要使用的注释)。

因此,只需将{{1}}替换为{{1}}。