標籤:under 自動化測試 app dex 參考 find 適合 argument login
本篇文章由來,這兩天整理了下自己經常使用而且很熟練的項目,今天突然想起漏了一個,補上了,但想到還沒對應的部落格,那就寫一個簡單的
我經常使用且相對熟練的部分技術如下(不知道算不算各位大神眼中的辣雞):
傳統的web項目測試,大多數都依靠測試部門小夥伴人工操作,費時費力還容易側漏`(*∩_∩*)′ 錯了 是漏測,
而selenium則為項目的測試提供了很大的便利,但並不是所有項目都適合,
哪些適合呢:公司自己的產品,且需要經常迴歸測試,比如類似OA這類業務系統產品
不適合的呢:比如外包業務,快速交付後就不管的,只需要測試一兩次
今天用java寫了一個簡單樣本,先看看執行效果(點擊圖片查看高清版本):
效果還滿意嗎?滿意請繼續往下看,不滿意請關閉視窗 謝謝
1.建立maven項目,引入selenium-java
<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java --> <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>3.8.1</version> </dependency>
2.寫代碼(因為自動化測試速度極快,每個步驟後我都稍微停頓了下,注釋也很清晰明了)
1 package com.xiao.selenium; 2 3 import java.util.List; 4 import java.util.Random; 5 import java.util.concurrent.TimeUnit; 6 7 import org.openqa.selenium.By; 8 import org.openqa.selenium.JavascriptExecutor; 9 import org.openqa.selenium.WebDriver;10 import org.openqa.selenium.WebElement;11 import org.openqa.selenium.firefox.FirefoxDriver;12 13 public class AutoTest {14 public static void main(String[] args) throws InterruptedException {15 Thread.sleep(3000);16 //System.setProperty("webdriver.chrome.driver", "c://chromedriver.exe");17 //WebDriver webDriver = new ChromeDriver();18 System.setProperty("webdriver.gecko.driver", "c://geckodriver.exe");19 WebDriver webDriver = new FirefoxDriver();20 webDriver.manage().window().maximize();21 webDriver.manage().deleteAllCookies();22 // 與瀏覽器同步非常重要,必須等待瀏覽器載入完畢23 webDriver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);24 25 //開啟目標地址26 webDriver.get("http://192.168.0.32:88");27 //輸入帳號 密碼並登陸系統28 Thread.sleep(1000);29 webDriver.findElement(By.xpath("/html/body/div/div/form/div[1]/div/div/input")).sendKeys("admin");30 webDriver.findElement(By.xpath("/html/body/div/div/form/div[2]/div/div/input")).sendKeys("123456");31 webDriver.findElement(By.cssSelector("html body div#app div.loginPage form.el-form.fromBox button.el-button.loginBtn.el-button--primary")).click();32 33 //選擇系統34 Thread.sleep(1000);35 webDriver.findElement(By.xpath("/html/body/div/div/div/div[1]/p")).click();36 37 //展開基礎資訊管理菜單38 Thread.sleep(1000);39 webDriver.findElement(By.xpath("/html/body/div/div/div/div[1]/div[3]/ul/div[1]/li/div/span")).click();40 //點擊科室管理菜單41 Thread.sleep(1000);42 webDriver.findElement(By.cssSelector(".is-opened > ul:nth-child(2) > li:nth-child(1)")).click();43 44 //跳轉到第2頁45 Thread.sleep(1000);46 webDriver.findElement(By.xpath("/html/body/div/div/div/div[2]/div[2]/div/div[2]/div[2]/div/div[2]/ul/li[2]")).click();47 48 //點擊新增按鈕49 webDriver.findElement(By.xpath("/html/body/div/div/div/div[2]/div[2]/div/div[2]/div[1]/div/div[1]/div[1]/button")).click();50 51 //根據規則隨機產生文字框內容52 int random = new Random().nextInt(200000000);53 Thread.sleep(1000);54 webDriver.findElement(By.xpath("/html/body/div[1]/div/div/div[2]/div[2]/div/div[3]/div/div[2]/form/div[1]/div[1]/div/div/input")).sendKeys(String.valueOf(random));55 Thread.sleep(1000);56 webDriver.findElement(By.xpath("/html/body/div[1]/div/div/div[2]/div[2]/div/div[3]/div/div[2]/form/div[1]/div[2]/div/div[1]/input")).sendKeys("自動化測試-"+random);57 58 //展開下拉框59 webDriver.findElement(By.xpath("/html/body/div[1]/div/div/div[2]/div[2]/div/div[3]/div/div[2]/form/div[2]/div[1]/div/div/div[1]/span/span/i")).click();60 Thread.sleep(1000);61 //擷取下拉框size62 List<WebElement> select1 = webDriver.findElements(By.cssSelector("div.el-select-dropdown:nth-child(4) > div:nth-child(1) > div:nth-child(1) > ul li"));63 //隨機播放一個項目64 int selectItem1 = new Random().nextInt(select1.size())+1;65 webDriver.findElement(By.xpath("/html/body/div[3]/div[1]/div[1]/ul/li["+selectItem1+"]")).click();66 67 //稍作停頓,然後儲存68 Thread.sleep(1000);69 webDriver.findElement(By.xpath("/html/body/div[1]/div/div/div[2]/div[2]/div/div[3]/div/div[3]/div/button[1]")).click();70 71 //跳轉到我的部落格72 Thread.sleep(3000);73 webDriver.get("https://www.cnblogs.com/xiaochangwei");74 75 webDriver.findElements(By.className("postTitle")).forEach(x -> {76 System.out.println(x.getText());77 });78 79 Thread.sleep(1000);80 //開啟標題為 通過Dockerfile構建鏡像並發布web項目 的文章81 webDriver.findElement(By.partialLinkText("通過Dockerfile構建鏡像並發布web項目")).click();82 83 Thread.sleep(1000);84 //移動到底部85 //((JavascriptExecutor) webDriver).executeScript("window.scrollTo(0, document.body.scrollHeight)");86 //移動到指定的座標(相對當前的座標移動) 87 ((JavascriptExecutor) webDriver).executeScript("window.scrollBy(0, 700)"); 88 Thread.sleep(1000);89 //移動到視窗絕對位置座標,如下移動到縱座標1600像素位置 90 ((JavascriptExecutor) webDriver).executeScript("window.scrollTo(0, 1600)"); 91 Thread.sleep(1000);92 //移動到指定元素,且元素底部和視窗底部對齊 參考 https://www.cnblogs.com/testway/p/6693140.html93 ((JavascriptExecutor) webDriver).executeScript("arguments[0].scrollIntoView(false);", webDriver.findElement(By.xpath("/html/body/div[2]/div[2]/div[1]/div/div[1]/div/div/div[2]/div[4]/div[3]/div[1]/a[5]/img")));94 //暫停五秒鐘後關閉95 Thread.sleep(2000);96 webDriver.quit();97 }98 }
其中:
16行Google瀏覽器的驅動:https://chromedriver.storage.googleapis.com/index.html
18行Firefox瀏覽器的驅動:https://github.com/mozilla/geckodriver/releases
然後運行,你就可以為所欲為了
selenium-java web自動化測試載入器