我正在尝试编写一个模拟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");
}
}
请帮我纠正此代码段。
答案 0 :(得分:0)
我不知道我是否对,但我认为你需要传递值
void fail_test(String name,int name){
}
我认为您应该保留数据类型而不是名称,即String ITestResult
答案 1 :(得分:0)
@AfterMethod
方法不允许 @AfterTest
。但是有可能在@AfterMethod
(我认为是你想要使用的注释)。
因此,只需将{{1}}替换为{{1}}。