慕课网web自动化测试实战之购买商品(五)

慕课网自动化测试实战

购买商品

需求:
  1. 进入实战课程列表页,遍历商品课程
  2. 对商品点击进入,再退回,以此遍历
用例遍历脚本
package testCase;

import base.BaseDriver;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.testng.annotations.Test;

import java.util.ArrayList;
import java.util.List;

/**
 * 课程列表遍历用例
 */
public class CourseListCase extends CaseBase{
    public BaseDriver driver;
    public CourseListCase(){
        this.driver=InitDriver("firefox");
    }
    @Test
    public void CourseList() throws InterruptedException {
        //进入实战课程页面
        driver.get("https://coding.imooc.com/");
        Thread.sleep(3000);
        //关掉广告
        driver.findElement(By.cssSelector(".redrain-closeBtn")).click();
        Thread.sleep(2000);
        driver.findElement(By.cssSelector(".js-close.imv2-close")).click();
        Thread.sleep(2000);
        //获取列表数据
        List<String> listTitle=this.listElementTitle();
        System.out.println("数据列表:"+listTitle);
        for (int i = 0;i <listTitle.size();i++){
            //通过课程标题定位课程,进入课程,再返回
            driver.findElement(By.xpath("//*[contains(text(),'"+listTitle.get(i)+"')]")).click();
            Thread.sleep(1000);
            driver.back();
            //去广告
            driver.findElement(By.cssSelector(".js-close.imv2-close")).click();
            Thread.sleep(2000);
        }
    }
    /**
     * 获取所有课程标题的list
     * 因为页面在返回后存在刷新无法定位,因此先把课程标题存储起来,方便定位
     */
    public List<String> listElementTitle(){
        //存储课程标题列表
        List<String> listTitle=new ArrayList<String>();
        //获取课程列表的父节点
        WebElement element=driver.findElement(By.className("shizhan-course-list"));
        List<WebElement> listElement=element.findElements(By.className("shizhan-course-box"));
        for (WebElement ele:listElement){
            //列表中添加课程标题
            listTitle.add(ele.findElement(By.className("shizan-name")).getText());
        }
        return listTitle;
    }
}

基类

CaseBase

package testCase;

import base.BaseDriver;

/**
 * 功能:用例的基类,初始化Driver
 */
public class CaseBase {
    public BaseDriver InitDriver(String browser){
        return new BaseDriver(browser);
    }

}

BaseDriver

package base;

import org.apache.commons.io.FileUtils;
import org.openqa.selenium.*;

import java.io.File;
import java.io.IOException;

/**
 * Driver的基类
 */
public class BaseDriver {
    WebDriver driver;
    public BaseDriver(String browser){
        SelectDriver selectDriver=new SelectDriver();
        this.driver = selectDriver.driverName(browser);
    }
    /**
     * 截图功能
     */
    public void takeScreenShot() throws IOException {
        //获取的是当前的系统时间(以时间作为截图的文件名)
        long time=System.currentTimeMillis();
        String imageTime=String.valueOf(time);
        imageTime=imageTime+".png";
        //获取当前工程路径
        String currentPath=System.getProperty("user.dir");
        //截图存放路径为=工程路径+文件名
        String screenPath=currentPath+"/"+imageTime;
        //截图函数getScreenshotAs()来截取当前窗口
        File screen=((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
        FileUtils.copyFile(screen,new File(screenPath));  //文件名复制到截图
    }
    //关闭driver
    public void stop(){
        System.out.println("stop driver");
        driver.close();
    }

    //封装Element的方法
    public WebElement findElement(By by){
        WebElement element=driver.findElement(by);
        return element;
    }
    //封装get,打开网址
    public void get(String url){
        driver.get(url);
    }
    //返回功能
    public void back(){
        driver.navigate().back();
    }
    //滚动位置
    public void execute_script(int vaule){
        ((JavascriptExecutor) driver).executeScript("window.scrollTo(0,"+vaule+")");
    }
}

SelectDriver

package base;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

/**
 * 功能:浏览器的选择
 */
public class SelectDriver {
    public WebDriver driverName(String browser){
        if (browser.equalsIgnoreCase("firefox")){
            return new FirefoxDriver();
        }else {
            return new ChromeDriver();
        }
    }
}

效果:

在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章