1、笔记
2、代码实现
package litemall;
import io.qameta.allure.Allure;
import org.apache.commons.io.FileUtils;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.openqa.selenium.*;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.time.Duration;
import java.util.Collections;
import java.util.List;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
public class IitemalTest {
private static WebDriver driver;
private static WebDriverWait wait;
private static Logger logger;
//开始
@BeforeAll
public static void setUp() throws InterruptedException {
driver = new ChromeDriver();
//添加隐式等待
driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(2));
//实例化显示等待
wait = new WebDriverWait(driver,Duration.ofSeconds(10));
//实例化logger;
logger = LoggerFactory.getLogger(IitemalTest.class);
//最大化窗口
driver.manage().window().maximize();
//登录进入系统
driver.get("http://litemall.hogwarts.ceshiren.com");
driver.findElement(By.name("username")).clear();
driver.findElement(By.name("username")).sendKeys("manage");
driver.findElement(By.name("password")).clear();
driver.findElement(By.name("password")).sendKeys("manage123");
driver.findElement(By.cssSelector(".el-button.el-button--primary.el-button--mini")).click();
Thread.sleep(3000);
}
//结束
@AfterAll
public static void tearDown(){
driver.quit();
}
//添加截图方法
public void screenshot() {
try {
//添加时间戳
long nowTime = System.currentTimeMillis();
//截图
File srcFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
//保存图片
FileUtils.copyFile(srcFile,new File("src/test/resources/img/"+ nowTime +".png"));
//添加图片到allure报告中
Allure.addAttachment("picture","image/png",new FileInputStream(srcFile),"jpg");
} catch (Exception e) {
logger.warn("截图错误"+e);
}
}
//添加商品类目并断言
@Test
void addProduceType() throws InterruptedException, IOException {
//点击商场管理进入商品类目添加页面
logger.debug("添加商品类目");
driver.findElement(By.cssSelector(".el-submenu__title span")).click();
driver.findElement(By.xpath("//span[text()='商品类目']")).click();
driver.findElement(By.cssSelector(".el-icon-edit")).click();
//在添加页面中输入信息,并保存
driver.findElement(By.cssSelector(".el-input__inner")).sendKeys("测试类目01");
driver.findElement(By.cssSelector(".el-dialog__footer .el-button.el-button--primary.el-button--mini span")).click();
//断言:检查创建的商品类目是否成功
//获取新创建商品类目的名称
//为让此处的断言不影响后续用例的执行,这里使用findElements,判定元素是否存
List<WebElement> eleList = driver.findElements(By.xpath("//*[text()='测试类目01']"));
logger.info("断言创建是否成功:"+ eleList.size());
assertEquals(1,eleList.size());
//截图,查看添加商品类目后页面样式
screenshot();
//清除垃圾数据
logger.debug("清除垃圾数据");
driver.findElement(By.xpath("//*[text()='测试类目01']/../..//span[text()='删除']")).click();
}
//删除产品类目并断言
@Test
void deleteProduceType() throws IOException {
//点击商场管理进入商品类目添加页面
driver.findElement(By.cssSelector(".el-submenu__title span")).click();
driver.findElement(By.xpath("//span[text()='商品类目']")).click();
driver.findElement(By.cssSelector(".el-icon-edit")).click();
//在添加页面中输入信息,并保存
driver.findElement(By.cssSelector(".el-input__inner")).sendKeys("测试类目02");
driver.findElement(By.cssSelector(".el-dialog__footer .el-button.el-button--primary.el-button--mini span")).click();
//删除操作
logger.debug("执行删除操作");
driver.findElement(By.xpath("//*[text()='测试类目02']/../..//span[text()='删除']")).click();
//断言,检查点击删除后页面是否弹出提示语
WebElement ele =wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector(".el-notification__content")));
logger.info("断言提示语是否出现:"+ ele.isDisplayed());
assertTrue(ele.isDisplayed());
//查看出现提示语时页面信息
screenshot();
//断言,检查是否删除成功
List<WebElement> list = driver.findElements(By.xpath("//*[text()='测试类目02']"));
logger.info("断言是否成功删除:"+ list.size());
assertEquals(0,list.size());
//查看删除后的页面信息
screenshot();
}
}