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

效果:

在這裏插入圖片描述

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