音乐播放器 - 自动化测试
在LoveMusicListTest添加testmusiclistpage()是否会弹出:登录失败,密码或者用户名错误!在LoveMusicListTest添加clickNullCheck()在LoveMusicListTest添加clickNullCheck()3.用户名不为空,密码为空。是否会弹出:用户名或者密码不能为空!4.用户名为空,密码不为空。是否会弹出:用户名或者密码不能为空!在log
对音乐播放器进行自动化测试:实现音乐播放器_strbug的博客-CSDN博客
1. 使用脑图编写 web 自动化测试用例

2. 准备工作
1. 创建一个 Maven 项目
2. 在 Tests包下的 java 下建包管理自己后续要写的代码。在common包下创建驱动和测试套件的类。
3. 导入自动化测试需要的相关依赖.
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>4.0.0</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>5.8.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-suite</artifactId>
<version>1.8.2</version>
<scope>test</scope>
</dependency>
3. 根据脑图设计博客系统自动化测试用例
3.1 测试登录页面
创建loginPage类,这个类主要有6个测试用例:
1.验证登录页面是否正常显示。 2.用户名和密码为空。是否会弹出:用户名或者密码不能为空! 3.用户名不为空,密码为空。是否会弹出:用户名或者密码不能为空! 4.用户名为空,密码不为空。是否会弹出:用户名或者密码不能为空! 5.用户名/密码错误,或者都错误。是否会弹出:登录失败,密码或者用户名错误! 6.用户名和密码正确。是否正常登录
1.页面是否正常显示。
相关代码 :
//登录页面
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class loginPage extends commonDriver {
private static EdgeDriver driver = getDriver();
// 在每个测试用例之前运行
@BeforeAll
static void setUp() throws Exception {
// 打开网页
driver.get("http://127.0.0.1:8080/login.html");
driver.manage().window().maximize();
}
/**
* 验证登录页面是否正常显示
* @throws Exception
*/
@Test
@Order(1)
void testLoginPage() throws Exception {
String title = driver.findElement(By.cssSelector("#body > div > h3")).getText();
// 验证登录页面是否正确显示
assertEquals("管理员登录", title);
assertTrue(driver.findElement(By.id("user")).isDisplayed());
assertTrue(driver.findElement(By.id("password")).isDisplayed());
assertTrue(driver.findElement(By.id("submit")).isDisplayed());
}
}
2.用户名和密码为空
在loginPage类添加loginNullFail()
/**
* 用户名和密码为空
* @throws InterruptedException
*/
@Test
@Order(2)
void loginNullFail() throws InterruptedException {
// 密码或用户名为空
driver.findElement(By.cssSelector("#submit")).click();
Thread.sleep(500);
// 验证登录失败后是否弹出提示框
Alert alert = driver.switchTo().alert();
assertEquals("用户名或者密码不能为空!", alert.getText());
alert.accept();
}
3.密码为空
在loginPage类添加loginFail2()
/**
* 密码为空
* @param user
* @throws InterruptedException
*/
@ParameterizedTest
@CsvSource({"bit"})
@Order(3)
void loginFail2(String user) throws InterruptedException {
// 登录之前先清空用户名和密码
driver.findElement(By.cssSelector("#user")).clear();
driver.findElement(By.cssSelector("#password")).clear();
// 输入错误的密码
driver.findElement(By.cssSelector("#user")).sendKeys(user);
driver.findElement(By.cssSelector("#submit")).click();
Thread.sleep(500);
// 验证登录失败后是否弹出提示框
Alert alert = driver.switchTo().alert();
assertEquals("用户名或者密码不能为空!", alert.getText());
alert.accept();
}
4.用户名为空
在loginPage类添加loginFail1()
/**
* 用户名为空
* @param password
* @throws InterruptedException
*/
@ParameterizedTest
@CsvSource({"123456"})
@Order(4)
void loginFail1(String password) throws InterruptedException {
// 登录之前先清空用户名和密码
driver.findElement(By.cssSelector("#user")).clear();
driver.findElement(By.cssSelector("#password")).clear();
// 输入错误的用户名
driver.findElement(By.cssSelector("#password")).sendKeys(password);
driver.findElement(By.cssSelector("#submit")).click();
Thread.sleep(500);
// 验证登录失败后是否弹出提示框
Alert alert = driver.switchTo().alert();
assertEquals("用户名或者密码不能为空!", alert.getText());
alert.accept();
}
5.用户名或密码错误
在loginPage类添加testLoginFail()
/**
* 用户名或密码错误
* @param user
* @param password
* @throws Exception
*/
@ParameterizedTest
@CsvSource({"admin,123"})
@Order(5)
void testLoginFail(String user, String password) throws Exception {
// 登录之前先清空用户名和密码
driver.findElement(By.cssSelector("#user")).clear();
driver.findElement(By.cssSelector("#password")).clear();
// 输入错误的用户名和密码
driver.findElement(By.cssSelector("#user")).sendKeys(user);
driver.findElement(By.cssSelector("#password")).sendKeys(password);
driver.findElement(By.cssSelector("#submit")).click();
Thread.sleep(500);
// 验证登录失败后是否弹出提示框
Alert alert = driver.switchTo().alert();
assertEquals("登录失败,密码或者用户名错误!", alert.getText());
alert.accept();
}
6.用户名和密码正确
在loginPage类添加testLoginSuccess()
/**
* 用户名和密码正确
* @param user
* @param password
* @throws Exception
*/
@ParameterizedTest
@CsvSource({"bit,123456"})
@Order(6)
void testLoginSuccess(String user, String password) throws Exception {
// 登录之前先清空用户名和密码
driver.findElement(By.cssSelector("#user")).clear();
driver.findElement(By.cssSelector("#password")).clear();
// 输入正确的用户名和密码
driver.findElement(By.cssSelector("#user")).sendKeys(user);
driver.findElement(By.cssSelector("#password")).sendKeys(password);
driver.findElement(By.cssSelector("#submit")).click();
Thread.sleep(500);
Alert alert = driver.switchTo().alert();
alert.accept();
// 验证登录成功后是否跳转到正确页面
String title = driver.findElement(By.cssSelector("#body > div.container > h3")).getText();
assertEquals("在线音乐服务器实现", title);
}
3.2 音乐列表页
创建MusicListTest类,里面有8个测试用例:
1.检测音乐列表页面是否正常显示
2.验证模糊查询是否成功。输入G是否显示带有G的全部音乐
3.输入框为空是否能查询全部音乐
4.是否可以播放音乐
5.点击收藏音乐。是否弹出:收藏成功!
6.点击收藏音乐。是否弹出:收藏失败!
7.验证删除按钮。是否弹出:删除成功,重新加载到当前页面!
8.验证删除选中是否成功。是否弹出:删除成功!
1.检测页面是否正常显示
在MusicListTest添加testmusiclistpage()
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class MusicListTest extends commonDriver {
private static EdgeDriver driver = getDriver();
/**
* 检测页面是否正常显示
*/
@Test
@Order(1)
public void testmusiclistpage() {
//验证输入框是否存在
driver.findElement(By.cssSelector("#exampleInputName2"));
//搜索按钮
driver.findElement(By.cssSelector("#submit1"));
//表格->选择
driver.findElement((By.cssSelector("#body > div.container > table > tbody:nth-child(1) > tr > th:nth-child(1)")));
//表格->歌名
driver.findElement(By.cssSelector("#body > div.container > table > tbody:nth-child(1) > tr > th:nth-child(2)"));
//表格->歌手
driver.findElement(By.xpath("//*[@id=\"body\"]/div[1]/table/tbody[1]/tr/th[3]"));
//表格->歌曲
driver.findElement(By.xpath("//*[@id=\"body\"]/div[1]/table/tbody[1]/tr/th[4]"));
//表格->操作
driver.findElement(By.xpath("//*[@id=\"body\"]/div[1]/table/tbody[1]/tr/th[5]"));
//-------------------------------------------------------------------------------------------------
//第一行歌曲->选择框
driver.findElement(By.xpath("//*[@id=\"80\"]"));
//第一行歌曲->歌名
driver.findElement(By.xpath("//*[@id=\"info\"]/tr[1]/td[1]"));
//第一行歌曲->歌曲作者
driver.findElement(By.xpath("//*[@id=\"info\"]/tr[1]/td[3]"));
//---------------------------------------------------------------------------------
//喜欢列表按钮
driver.findElement(By.xpath("//*[@id=\"body\"]/div[1]/div[2]/a[1]"));
//添加歌曲按钮
driver.findElement(By.xpath("//*[@id=\"body\"]/div[1]/div[2]/a[2]"));
//删除选中按钮
driver.findElement(By.xpath("//*[@id=\"delete\"]"));
}
}
2.验证模糊查询是否成功
在MusicListTest添加testSearch()
/**
* 验证模糊查询是否成功
* @param key
*/
@ParameterizedTest
@CsvSource({"G"})
@Order(2)
public void testSearch(String key) {
// 输入查询条件并点击查询按钮
driver.findElement(By.cssSelector("#exampleInputName2")).sendKeys(key);
driver.findElement(By.cssSelector("#submit1")).click();
// 验证查询结果是否符合预期
driver.findElement(By.cssSelector("#info > tr:nth-child(1) > td:nth-child(2)"));
driver.findElement(By.cssSelector("#info > tr:nth-child(2) > td:nth-child(2)"));
}
3.不输入是否能查询全部音乐
在MusicListTest添加clickNullCheck()
/**
* 不输入是否能查询全部音乐
*/
@Test
@Order(3)
public void clickNullCheck() {
//清空搜索框
driver.findElement(By.cssSelector("#exampleInputName2")).clear();
//查询空字符是否显示全部歌曲
driver.findElement(By.cssSelector("#submit1")).click();
//获取其中一个歌曲是否正常显示
driver.findElement(By.cssSelector("#info > tr:nth-child(2) > td:nth-child(2)"));
}
4.是否可以播放音乐
在MusicListTest添加testPlay()
/**
* 是否可以播放音乐
* @throws InterruptedException
*/
@Test
@Order(4)
public void testPlay() throws InterruptedException {
// 点击第一行的播放音乐按钮
driver.findElement(By.xpath("//*[@id=\"info\"]/tr[1]/td[5]/button")).click();
Thread.sleep(5000);
}
5.是否能收藏音乐
在MusicListTest添加failloveMusic()
/**
* 是否能收藏音乐
*/
@Test
@Order(5)
public void failloveMusic() throws InterruptedException, IOException {
//点击第一首喜欢收藏按钮
driver.findElement(By.cssSelector("#info > tr:nth-child(1) > td:nth-child(8) > button")).click();
Thread.sleep(500);
Alert alert = driver.switchTo().alert();
//验证弹出是否已经符合
assertEquals("收藏成功!", alert.getText());
alert.accept();
}
6.是否能收藏音乐
在MusicListTest添加loveMusic()
/**
* 是否能收藏音乐
*/
@Test
@Order(6)
public void loveMusic() throws InterruptedException {
//点击第一首喜欢收藏按钮
driver.findElement(By.cssSelector("#info > tr:nth-child(1) > td:nth-child(8) > button")).click();
Thread.sleep(500);
Alert alert = driver.switchTo().alert();
//验证弹出是否已经符合
assertEquals("收藏失败!", alert.getText());
alert.accept();
}
7.验证删除按钮是否能够删除
在MusicListTest添加loveMusic()
/**
* 验证删除按钮是否能够删除
* @throws InterruptedException
*/
@Test
@Order(7)
public void testDelete1() throws InterruptedException {
//点击第四首音乐的删除按钮
driver.findElement(By.cssSelector("#info > tr:nth-child(4) > td:nth-child(7) > button")).click();
Thread.sleep(500);
// 处理弹窗
Alert alert = driver.switchTo().alert();
//弹窗是否符合预期
Assertions.assertEquals("删除成功,重新加载到当前页面!", alert.getText());
alert.accept();
}
8.验证删除选中是否成功
在MusicListTest添加testDelete()
/**
* 验证删除选中是否成功
* @throws InterruptedException
*/
@Test
@Order(8)
public void testDelete() throws InterruptedException {
// 勾选第二行,第三行的选择框
driver.findElement(By.cssSelector("#\\31 45")).click();
driver.findElement(By.cssSelector("#\\31 46")).click();
// 点击删除选中按钮
driver.findElement(By.xpath("//*[@id=\"delete\"]")).click();
Thread.sleep(500);
// 处理弹窗
Alert alert = driver.switchTo().alert();
Assertions.assertEquals("删除成功!", alert.getText());
alert.accept();
Thread.sleep(500);
//点击喜欢列表
driver.findElement(By.cssSelector("#body > div.container > div:nth-child(3) > a:nth-child(1)")).click();
}
3.3 喜欢列表页
1.检测喜欢列表页面是否正常显示
2.验证是否可以模糊查询。输入陈是否会显示包含陈的音乐
3.查询空字符是否显示全部歌曲
4.验证是否可以播放音乐。点击播放按钮是否播放,点击大播放按钮是否停止
5.验证取消收藏是否能够返回首页。是否出现弹出:删除成功,重新加载到当前页面!
1.检测页面是否正常显示
在LoveMusicListTest添加testmusiclistpage()
/**
* 检测页面是否正常显示
*/
@Test
@Order(1)
public void testmusiclistpage() {
//验证输入框是否存在
driver.findElement(By.cssSelector("#exampleInputName2"));
//搜索按钮
driver.findElement(By.cssSelector("#submit1"));
//表格->歌名
driver.findElement(By.cssSelector("#body > div.container > table > tbody:nth-child(1) > tr > th:nth-child(1)"));
//表格->歌手
driver.findElement(By.xpath("//*[@id=\"body\"]/div[1]/table/tbody[1]/tr/th[2]"));
//表格->歌曲
driver.findElement(By.xpath("//*[@id=\"body\"]/div[1]/table/tbody[1]/tr/th[3]"));
//表格->操作
driver.findElement(By.xpath("//*[@id=\"body\"]/div[1]/table/tbody[1]/tr/th[4]"));
//-------------------------------------------------------------------------------------------------
//第一行歌曲->歌名
driver.findElement(By.xpath("//*[@id=\"info\"]/tr/td[1]"));
//第一行歌曲->歌曲作者
driver.findElement(By.xpath("//*[@id=\"info\"]/tr/td[3]"));
//---------------------------------------------------------------------------------
//回到首页按钮
driver.findElement(By.xpath("//*[@id=\"body\"]/div[1]/div[2]/a"));
}
2.验证是否可以模糊查询
在LoveMusicListTest添加testSearchMusic()
/**
* 验证是否可以模糊查询
* @param key
*/
@ParameterizedTest
@CsvSource({"陈"})
@Order(2)
public void testSearchMusic(String key) {
// 在搜索框中输入音乐名称
driver.findElement(By.cssSelector("#exampleInputName2")).sendKeys(key);
// 提交搜索请求
driver.findElement(By.cssSelector("#submit1")).click();
// 断言搜索结果包含期望的音乐名称
String text = driver.findElement(By.cssSelector("#info > tr:nth-child(1) > td:nth-child(1)")).getText();
Assertions.assertEquals("陈奕迅 - 让我留在你身边", text);
}
3.查询空字符是否显示全部歌曲
在LoveMusicListTest添加clickNullCheck()
/**
* 查询空字符是否显示全部歌曲
*/
@Test
@Order(3)
public void clickNullCheck() {
//清空搜索框
driver.findElement(By.cssSelector("#exampleInputName2")).clear();
//查询空字符是否显示全部歌曲
driver.findElement(By.cssSelector("#submit1")).click();
//验证其中一首是否正常显示
driver.findElement(By.cssSelector("#info > tr > td:nth-child(1)"));
}
4.验证是否可以播放音乐
在LoveMusicListTest添加clickNullCheck()
/**
* 验证是否可以播放音乐
* @throws InterruptedException
*/
@Test
@Order(4)
public void testPlayMusic() throws InterruptedException {
// 找到第一个播放按钮并点击它
driver.findElement(By.xpath("//*[@id=\"info\"]/tr/td[5]/button")).click();
Thread.sleep(5000);
// 断言音乐正在播放
driver.findElement(By.cssSelector("#body > div:nth-child(3) > div")).click();
String text = driver.findElement(By.cssSelector("#body > div:nth-child(3) > div > div > div.big-play-btn > a")).getText();
Assertions.assertEquals("大播放按钮",text);
}
5.验证取消收藏是否能够返回首页
在LoveMusicListTest添加testDeleteMusic()
/**
* 验证取消收藏是否能够返回首页
*/
@Test
@Order(5)
public void testDeleteMusic() throws InterruptedException {
// 找到第一个删除按钮并点击它
driver.findElement(By.cssSelector("#info > tr > td:nth-child(6) > button")).click();
Thread.sleep(500);
// 处理确认对话框
Alert alert = driver.switchTo().alert();
Assertions.assertEquals("删除成功,重新加载到当前页面!", alert.getText());
alert.accept();
}
3.4 上传页面
1.上传页面是否正常显示
2.是否能够上传音乐
1.验证上传页面是否正常显示
创建uploadFileTest类
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class uploadFileTest extends commonDriver {
private static EdgeDriver driver = getDriver();
@AfterAll
static void tearDown() throws Exception {
// 关闭浏览器
driver.quit();
}
/**
* 验证上传页面是否正常显示
* @throws Exception
*/
@Test
@Order(1)
public void testUploadPage() {
//选中文件按钮
driver.findElement(By.cssSelector("#body > form > input[type=file]:nth-child(1)"));
//文件上传文字是否存在
driver.findElement(By.xpath("//*[@id=\"body\"]/form/text()[1]"));
//歌手名是否存在
driver.findElement(By.xpath("//*[@id=\"body\"]/form/text()[2]"));
//上传按钮
driver.findElement(By.cssSelector("#body > form > input[type=submit]:nth-child(3)"));
}
}
2.上传音乐
在uploadFileTest类添加testUploadFile1()
/**
* 上传音乐
* @throws Exception
*/
@Test
@Order(2)
public void testUploadFile1() throws Exception {
driver.findElement(By.cssSelector("#body > div.container > div:nth-child(3) > a:nth-child(2)")).click();
String FILE_PATH = "C:\\Users\\26524\\Desktop\\杂物\\G_E_M_ 邓紫棋 - 错过不错.mp3";
// 找到文件上传输入框,输入文件路径
WebElement uploadInput = driver.findElement(By.name("filename"));
uploadInput.sendKeys(FILE_PATH);
// 找到上传按钮,点击上传
WebElement submitButton = driver.findElement(By.xpath("//input[@type='submit']"));
submitButton.click();
}
3.5 创建测试套件
在common的包下创建test类,该类是用来指定哪些测试类需要运行, 以及运行顺序的.
@Suite
@SelectClasses({loginPage.class, MusicListTest.class,
LoveMusicListTest.class, uploadFileTest.class})
public class test extends commonDriver{
}
运行测试套件, 程序执行结果 :

就此结束
更多推荐




所有评论(0)