电子商务产品实践-笔记

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();
}

}