我必须使用数据提供程序在具有不同客户端的页面上验证整数值。我正在使用softassert,因此执行不会停止。但是,当一个软件断言在第一次迭代中(有意地)失败时,随后的迭代会突然失败(应通过),并抛出与第一次迭代中完全相同的断言错误。但如果经过一次迭代,第二步就可以继续进行。问题可能在哪里?
@BeforeMethod
public void beforeMethod(Method method) {
System.setProperty("webdriver.chrome.driver","C:\\Users\\a0136300\\Downloads\\chromedriver_win32\\chromedriver.exe");
driver = new ChromeDriver();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
config = new Configreader();
driver.manage().deleteAllCookies();
}
@DataProvider(name = "TestMSSData")
public Object [][] getData(){
Object [][] data=new Object[2][6];
data[0][0]="url1";
data[0][1]="client1";
data[0][2]="Retail Eligibles : 2018";
data[0][3]="E1";
data[0][4]="Maria_Fake";
data[0][5]=7937;
data[1][0]="url2";
data[1][1]="client2";
data[1][2]="ACTIVE- FAC : 2018";
data[1][3]="E2";
data[1][4]="Tad_Fake";
data[1][5]=4761;
return data;
}
@Test(dataProvider = "TestMSSData")
public void Manager_Self_Service(String url, String client, String eliggrp, String empnumber, String firstname, Integer SSN) throws Exception {
driver.get(url);
try {
String headertex = driver.findElement(By.xpath("/html/body/div[2]/div[1]/div[1]/h3")).getText();
Assert.assertEquals(headertex, "Log On ");}
catch (NoSuchElementException e){
throw new AssertionError("Error in loading URL", e);
}
driver.manage().window().maximize();
RIMethods obj3 =new RIMethods(driver, config);
obj3.Login();
//Verify last 4 digits of SSN
String sn = driver.findElement(By.name("eeSsn3")).getAttribute("value");
int socialsecurity = Integer.parseInt(sn);
s_assert.assertEquals(socialsecurity, SSN, "SSN last four digits did not match");
//verify the header for Future benefits
if(driver.findElement(By.xpath("/html/body/div[4]/div[2]/div[1]/div[1]")).getText().contains("Future Benefits Summary"))
System.out.println("Future Benefits summary header is correct");
else
System.out.println("header is incorrect");
driver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
s_assert.assertAll();
}
@AfterMethod
public void cleanUp(){
driver.quit();
}
答案 0 :(得分:0)
啊,要花一个整天都在努力,解决方案太简单了。
为使其工作,我在Test方法内创建了softassert对象,而不是在类级别进行定义,不确定该如何影响,但现在可以正常工作了。