背景:針對個人博客項目進(jìn)行測試,個人博客主要由四個頁面構(gòu)成:登錄頁、列表頁、詳情頁和編輯頁,主要功能包括:用戶登錄功能、發(fā)布博客功能、查看文章詳情功能、查看文章列表功能、刪除文章功能、退出功能。對于個人博客的測試主要就是針對主要功能進(jìn)行測試,然后按照頁面書寫測試類。
自動化測試一般步驟:
1)使用腦圖編寫web自動化測試用例
2)創(chuàng)建自動化項目,根據(jù)用例來實現(xiàn)腳本
?一、腦圖
對主要功能進(jìn)行測試:
?
?二、代碼編寫
- 根據(jù)腦圖進(jìn)行測試用例的編寫:每個頁面一個測試類,然后再各個測試類中進(jìn)行測試用例的編寫。
- 使用測試套件便于運行以及修改。
- 創(chuàng)建啟動會頻繁進(jìn)行復(fù)用,所以單獨創(chuàng)建一個類進(jìn)行存儲。
- 添加隱式等待,為了確保頁面正確加載渲染。
1. 添加相關(guān)依賴pom.xml?
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>RELEASE</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>RELEASE</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.141.59</version>
</dependency>
2. 新建包并在包下創(chuàng)建測試類
2.1公共類InitAndEnd
1.在所有測試開始之前加載驅(qū)動
2.在所有測試結(jié)束后關(guān)閉驅(qū)動
public class InitAndEnd {
static WebDriver webDriver;
@BeforeAll
static void Init(){
webDriver = new ChromeDriver();
}
@AfterAll
static void End(){
webDriver.quit();
}
}
?2.2? BlogCases 類
1.測試用戶登錄功能
2.測試發(fā)布博客功能
3.測試查看文章詳情功能
4.測試查看文章列表功能
5.測試刪除文章功能
6.測試退出功能
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class BlogCases extends InitAndEnd{
/**
* 登錄
*/
@Order(1)
@ParameterizedTest
@CsvSource(value = "張三,123456")
void Login(String username,String password){
//打開登錄頁面
webDriver.get("http://localhost:8080/blog_war/blog_login.html");
webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
//輸入用戶名
webDriver.findElement(By.cssSelector("#username")).sendKeys(username);
webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
//輸入密碼
webDriver.findElement(By.cssSelector("#password")).sendKeys(password);
webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
//點擊提交
webDriver.findElement(By.cssSelector("#btn_login_submit")).click();
webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
//校驗當(dāng)前登錄的用戶是不是張三,如果是測試通過,否則測試不通過
String user_name = webDriver.findElement(By.cssSelector("h3")).getText();
webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
Assertions.assertEquals(username,user_name);
System.out.println("成功登錄");
}
/**
* 博客列表
*/
@Order(2)
@Test
void BlogList() {
webDriver.get("http://localhost:8080/blog_war/blog_login.html");
webDriver.manage().timeouts().implicitlyWait(3000, TimeUnit.SECONDS);
int blog_num = webDriver.findElements(By.cssSelector(".title")).size();
Assertions.assertNotEquals(0, blog_num);
String page_title = webDriver.getTitle();
Assertions.assertEquals(page_title, "用戶登錄");
System.out.println("博客列表加載成功");
}
/**
*
* 博客詳情頁校驗
*/
@Order(3)
@Test
void BlogDetail() {
// 打開列表頁
webDriver.get("http://localhost:8080/blog_war/blog_list.html");
webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
// 找到查看全文按鈕,點擊
webDriver.findElement(By.xpath("/html/body/div[2]/div[2]/div[1]/div[4]/a")).click();
webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
// 獲取博客標(biāo)題
String blog_title = webDriver.findElement(By.cssSelector("#div_detals_title")).getText();
// 如果博客正文不為空,測試通過
// 否則測試不通過
Assertions.assertNotNull(blog_title);
System.out.println("博客詳情頁校驗");
}
/**
* 寫博客
*/
@Order(4)
@Test
void EditBlog() throws IOException, InterruptedException {
// 找到寫博客按鈕,點擊
webDriver.findElement(By.cssSelector("body > div.nav > div > div > a:nth-child(2)")).click();
webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
// 執(zhí)行js(選中標(biāo)題輸入框,輸入字符串)
((JavascriptExecutor)webDriver).executeScript("document.querySelector(\"#title\").value=\"自動化測試\"");
webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
//編輯頁的md是第三方插件,所以不可以直接使用sendkeys像編輯板塊寫入內(nèi)容,可以先點擊上方按鈕,然后進(jìn)行插入
webDriver.findElement(By.cssSelector("#blog_edit > div.editormd-toolbar > div > ul > li:nth-child(20)")).click();
webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
((JavascriptExecutor)webDriver).executeScript("document.querySelector(\"#text_edit_content\").value=\"自動化測試\"");
webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
webDriver.findElement(By.cssSelector("#submit")).click();
webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
sleep(3000);
//對彈出框校驗
webDriver.switchTo().alert().accept();
// 校驗頁面跳轉(zhuǎn)到列表頁
sleep(3000);
String cur_url = webDriver.getCurrentUrl();
Assertions.assertEquals("http://localhost:8080/blog_war/blog_list.html", cur_url);
// 校驗第一條博客標(biāo)題是不是剛剛發(fā)布的博客標(biāo)題
String first_blog_titlt = webDriver.findElement(By.xpath("/html/body/div[2]/div[2]/div[1]/div[1]")).getText();
webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
Assertions.assertEquals("自動化測試", first_blog_titlt);
System.out.println("寫博客校驗");
}
/**
* 刪除博客
*/
@Order(5)
@Test
void DeleteBolg() throws InterruptedException {
// 找到查看全文按鈕,點擊
webDriver.findElement(By.xpath("/html/body/div[2]/div[2]/div[1]/div[4]/a")).click();
webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
// 找到刪除按鈕,點擊
webDriver.findElement(By.cssSelector("body > div.nav > div > div > a:nth-child(4)")).click();
webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
sleep(3000);
//對彈出框進(jìn)行處理
webDriver.switchTo().alert().accept();
sleep(3000);
// 校驗當(dāng)前頁面是否跳轉(zhuǎn)到博客列表頁面
String cur_url = webDriver.getCurrentUrl();
Assertions.assertEquals("http://localhost:8080/blog_war/blog_list.html", cur_url);
// 獲取博客發(fā)布是時間
String blog_release_time = webDriver.findElement(By.xpath("/html/body/div[2]/div[2]/div[1]/div[2]")).getText();
// 如果博客發(fā)布時間包括2023-08-18測試 不通過
// 否則測試通過
if(blog_release_time.contains("2023-08-18")) {
System.out.println("博客發(fā)布時間:" + blog_release_time);
System.out.println("測試不通過");
} else {
System.out.println("測試通過");
}
}
/**
* 退出博客
*/
@Order(6)
@Test
void LogOut() throws InterruptedException {
webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
// 找到退出按鈕,點擊
webDriver.findElement(By.cssSelector("#a_list_logout")).click();
webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
// 校驗頁面是否有登錄文案
String login_text = webDriver.findElement(By.cssSelector("body > div.login-container > form > div > div.title")).getText();
// 如果有登錄文案,退出成功(測試用例通過)
// 否則,退出失?。y試不通過)
sleep(3000);
webDriver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
if(login_text.equals("用戶登錄")) {
System.out.println("測試通過");
} else {
System.out.println("測試不通過");
}
}
}
3.測試結(jié)果
所有測試用例通過,如圖所示文章來源:http://www.zghlxwxcb.cn/news/detail-656735.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-656735.html
到了這里,關(guān)于博客系統(tǒng)之自動化測試的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!