1. ?動化實施步驟
1.1 編寫web測試?例
1.2 ?動化測試腳本開發
common
public class AutotestUtils {public static EdgeDriver driver;//
創建驅動對象public static EdgeDriver createDriver(){//
驅動對象已經創建好了
/
沒有創建if( driver == null){driver = new EdgeDriver();//
創建隱式等待driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));}return driver;}public AutotestUtils(String url){EdgeDriver driver = createDriver();driver.get(url);}public List<String> getTime(){//
?件能不能按照天的維度按?件夾進?保存//
?件格式20230212-123030
毫秒SimpleDateFormat sim1 = new SimpleDateFormat("yyyyMMdd-HHmmssSS");SimpleDateFormat sim2 = new SimpleDateFormat("yyyyMMdd");String filename = sim1.format(System.currentTimeMillis());String dirname = sim2.format(System.currentTimeMillis());List<String> list = new ArrayList<>();list.add(dirname);list.add(filename);return list;}/***
獲取屏幕截圖,把所有的?例執?的結果保存下來*/public void getScreenShot(String str) throws IOException {List<String> list = getTime();//dir+filename// ./
指的是當前的項?路徑下,也就是
BlogAutoTest
下// ./src/test/java/com/blogWebAutoTest/dirname/filename// ./src/test/java/com/blogWebAutoTest/20230212/logintest_20230212
123030
毫秒
.png String filename =
"./src/test/java/com/blogWebAutoTest/"+list.get(0)+"/"+str+"_"+list.get(1)+".png";File srcfile = driver.getScreenshotAs(OutputType.FILE);//
把屏幕截圖?成的?件放到指定的路徑FileUtils.copyFile(srcfile,new File(filename));}}
cases/BlogLogin.py
import time
from selenium.webdriver.common.by import By
from common.Utils import BlogDriver
class BlogLogin:url = ""driver = ""def __init__(self): self.url = "http://192.168.47.135:8653/blog_system/blog_login.html" self.driver = BlogDriver.driver self.driver.get(self.url) def loginSucTest(self): time.sleep(2) self.driver.find_element(By.CSS_SELECTOR, "#username").clear() self.driver.find_element(By.CSS_SELECTOR, "#password").clear() self.driver.find_element(By.CSS_SELECTOR,
"#username").send_keys("admin")self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("123") self.driver.find_element(By.CSS_SELECTOR, "#submit").click()# 對登錄結果進?檢測, 如果跳轉到了博客列表?才算是登錄成功了self.driver.find_element(By.CSS_SELECTOR, "body > div.container >
div.left > div > img")BlogDriver.getScreenShot() self.driver.back()def loginFailTest(self): self.driver.find_element(By.CSS_SELECTOR, "#username").clear() self.driver.find_element(By.CSS_SELECTOR, "#password").clear() self.driver.find_element(By.CSS_SELECTOR,
"#username").send_keys("admin")self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("111") self.driver.find_element(By.CSS_SELECTOR, "#submit").click()# 等登錄失敗的結果進?檢測, 不能僅僅通過body來校驗結果,因為登錄成功的結果?也有
body元素expect = "??名或密碼錯誤!"actual = self.driver.find_element(By.CSS_SELECTOR, "body").text print(actual)BlogDriver.getScreenShot() assert expect == actual self.driver.back()
cases/BlogList.py
from selenium.webdriver.common.by import By
from common.Utils import BlogDriverclass BlogList:url = ""driver = ""def __init__(self): self.driver = BlogDriver.driver self.url = "http://192.168.47.135:8653/blog_system/blog_list.html"self.driver.get(self.url)# 前提:登陸狀態下才能進?到列表? def ListTest(self):self.driver.find_element(By.CSS_SELECTOR, "body > div.container >
div.left > div > img")self.driver.find_element(By.CSS_SELECTOR, "body > div.container >
div.right > div:nth-child(1) > a")articles = self.driver.find_elements(By.CSS_SELECTOR, "body >
div.container > div.right > div")assert len(articles) > 10#點擊?章self.driver.find_element(By.CSS_SELECTOR,"body > div.container >
div.right > div:nth-child(1) > a").click()title = self.driver.titleassert title == "博客詳情?" BlogDriver.getScreenShot()
cases/BlogDetail.py
from selenium.webdriver.common.by import By
from common.Utils import BlogDriverclass BlogDetail:url = " "driver = ""def __init__(self): self.url = "http://192.168.47.135:8653/blog_system/blog_detail.html?
blogId=15"self.driver = BlogDriver.driver title = self.driver.title#列表?已經跳過來了,?需再指定url跳轉if not title=="博客列表?":self.driver.get(self.url) def DetailCheck(self):#body > div.container > div.right > div:nth-child(1) > a BlogDriver.getScreenShot() self.driver.find_element(By.CSS_SELECTOR,"body > div.container >
div.right > div > h3")self.driver.find_element(By.CSS_SELECTOR,"body > div.container >
div.right > div > div.date")self.driver.find_element(By.CSS_SELECTOR,"#content")
cases/RunCases.py
from common.Utils import BlogDriverfrom tests import BlogLoginfrom tests import BlogListfrom tests import BlogDetailif __name__ == "__main__":BlogLogin.BlogLogin().loginSucTest() BlogList.BlogList().ListTest() BlogDetail.BlogDetail().DetailCheck() BlogDriver.driver.quit()
1.3 將?動化測試補充?測試報告
測試報告模板: