慕课网自动化测试实战
购买商品
需求:
- 进入实战课程列表页,遍历商品课程
- 对商品点击进入,再退回,以此遍历
用例遍历脚本
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();
}
}
}