慕課網自動化測試實戰
購買商品
需求:
- 進入實戰課程列表頁,遍歷商品課程
- 對商品點擊進入,再退回,以此遍歷
用例遍歷腳本
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();
}
}
}