Web自動化測試Selenium 學習筆記(一)

 

一、Web自動化測試簡介
自動化基礎:自動化用例編寫、Selenium優點及原理、自動化環境搭建
Selenium基礎:常見8大元素定位(表格)、常見元素處理、下拉框元素處理、不一樣窗口切換、元素進階、元素等待
需求到框架
    需求分析-用例設計-基礎腳本-登陸/購物腳本重構-封裝讀取配置文件-數據驅動-監聽截圖-代碼分層-框架實現-日誌收集-報告生成-持續集成
二、功能測試和自動化測試的區別
    什麼是功能測試:
        知足需求找BUG
    什麼是自動化測試:
        編寫代碼、腳本讓程序自動運行;減小人工投入,提升工做效率;迴歸測試;系統監控
三、自動化測試流程
    常見的測試流程
        分析測試需求-選擇方案-制定測試計劃-環境-用例準備-編碼-分析結果
四、自動化測試用例和手工測試用例的區別
    手工用例
        ID 模塊 前提條件 步驟 預期結果 實際結果
    自動化測試用例 
        ID 模塊 前提條件 步驟 預期結果 實際結果 
     可是兩者的步驟的精度不同 
五、爲何要作自動化?
    減小人力成本
    完成大量重複性工做
    提升測試效率
    保證工做的一致性,增長信任度
    完成手工不能完成的工做
六、是否適合作自動化?
    時間
    人員
    系統
    領導
七、在什麼狀況下作自動化?
    單元測試?    集成測試?    接口測試?    UI測試?
八、什麼樣的項目須要作自動化測試?
    需求變動慢
    週期長
    腳本可重複利用
九、Selenium簡介
    Selenium 
十、Selenium的優點以及工做原理
    Selenium的優點:開源(徹底免費)、多瀏覽器 、多平臺、API齊全、瀏覽器內運行
    Selenium的工做原理
        首先它是client即腳本,腳本最開始會啓動生成一個driver,而後會啓動生成一個Server即瀏覽器,把咱們的瀏覽器綁定在一個端口上,這個時候腳本咱們就能夠經過發送一些session也就是發送一些請求到Server,而後讓他執行一些事情,把這個請求發送到瀏覽器的時候,瀏覽器會自動解析client發送過來的請求,解析完以後會進行相應的操做,執行完以後會根據執行的結果,把這個東西返回給咱們的腳本,若是成功就響應成功了,失敗就失敗了,返回到客戶端,就能看到一個執行結果了
十一、常見瀏覽器的啓動
    Firefox瀏覽器啓動(Firefox在webdriver中有自帶驅動)
        import org.openqa.selenium.*;
        import org.openqa.selenium.firefox*;
        WebDriver driver;
        System.setProperty("webdriver.firefox.bin","Firefox的詳細路徑");  //瀏覽器沒有裝在默認路徑時須要此行
        driver = new FirefoxDriver();  //實例化一個對象firefox
        String testUrl = "http://www.baidu.com";
        driver.ger(testUrl);
        driver.quit();
    chrome啓動(chrome在webdriver中沒有自帶驅動)
        import org.openqa.selenium.*;
        import org.openqa.selenium.chrome*;
        WebDriver driver;
        System.setProperty("webdriver.chrome.driver","chrome的詳細路徑");  //瀏覽器沒有裝在默認路徑時須要此行
        driver = new ChromeDriver();  //實例化一個對象
        String testUrl = "http://www.baidu.com";
        driver.ger(testUrl);
        driver.quit();
    IE啓動
        import org.openqa.selenium.*;
        import org.openqa.selenium.InternetExplorerDriver*;
        WebDriver driver;
        System.setProperty("webdriver.ie.driver","IE的詳細路徑");  //瀏覽器沒有裝在默認路徑時須要此行
        driver = new InternetExplorerDriver();  //實例化一個對象
        String testUrl = "http://www.baidu.com";
        driver.ger(testUrl);
        driver.quit();
十二、元素定位
    10大定位方法
        By.id     By.name     By.tagName    By.className    By.linkText    By.partialLinkText    By.xpath    By.cssSelector    表格定位    層級定位
    driver.findElement(By.id("kw")).sendKeys("selenium");
    driver.findElement(By.name("wd")).sendKeys("selenium");
    driver.findElement(By.classname("s_ipt")).sendKeys("selenium");
    driver.findElement(By.xpath(".//*[@id='kw']")).sendKeys("selenium");
    driver.findElement(By.cssSelector("#kw")).sendKeys("selenium");
    有不少元素的時候它是會取第一個
    driver.findElement(By.linkText("新聞")).click();
    driver.findElement(By.partialLinkText("新")).click();
    findElement是定位單一的一個元素的方法,定位一組方法咱們須要用findElements,findElements是拿到了一個數組
    表格定位:
        String str = "第二行第一列";
        WebElement Table = driver.findElement(By.tagname("table"))
        List<WebElement> rows = Table.findElements(By.tagName("tr"));
        for(WebElement row:rows){
            List<WebElement> tds= row.findElements(By.tagName("td"));
            for(WebElement td:tds){
                String value = td.getText();
                if(value.equals( str)){
                    System.out.pringln(value+"\n");
                }else{
                    System.out.pringln("error"+"\n");
                }
            }
        }
    常見的自動化框架:關鍵字驅動、數據驅動、混合驅動
1三、經常使用API
    打開網址方式
        Driver.get()
        Driver.navigate.to()
    操做瀏覽器API
        Driver.navigate().refresh()  //刷新頁面
        Driver.navigate().forward()  //前進
        Driver.navigate().back()  //後退
        Driver.getTitle()
        Driver.getCurrentUrl()  //獲取當前URL
        Driver.manage().window().maximize() //窗口最大化
        Driver.quite()  //瀏覽器關閉,沒有徹底關閉,進程中仍佔着
        Driver.close()  //瀏覽器關閉
        滾動條操做
        操做瀏覽器cookie
    輸入框操做API
        SendKeys()
        Clear()
        getText()
        Click()
    選擇框處理
        單選框
        複選框
        下拉框
    特殊窗口操做
        Iframe窗口處理
        彈窗處理
    JS操做
        Js定位
        Js單擊元素
    頁面元素處理
        等待加載
        根據屬性獲取元素值
        獲取對象的css屬性
        獲取對象狀態
            頁面是否顯示isdisplay()
            元素是否存在find_element
            元素是否選中isSelected()
            是否處於灰化狀態isEnabled()
    特殊操做講解
        報錯時截屏保存
        模擬鼠標右鍵操做
        鼠標懸浮
        上傳文件
        日期控件處理
        瀏覽器滾動條操做
1四、常見元素處理
    1.輸入框
        sendKeys 
        clear 
        getAttribute 
    2.單選框
        click 
        clear //清楚
        isSelected //是否選中
    3.多選框
        click
        clear
        isSelected
        isEnabled //判斷是不是enable狀態
    4.按鈕
        click 
        isEnabled //判斷是不是enable狀態
    5.表單
        submit
    6.上傳文件
        sendKeys 
 1五、下拉框--選擇元素
    下拉框定位    Select list = new Select(locator);
    下拉框操做    選擇對應的元素    Text Value Index 
                         不選擇對應的元素    deselectAll deselectByvalue deselectByVisibleText
                         獲取選擇項的值    getAllSelectdOptions() getFirstSelectedOption().getText
1六、元素進階操做
    鼠標左擊:
        Actions action = new Actions(driver);
        Action.click().perform();
    鼠標右擊:
        Actions action = new Actions(driver);
        Action.contextClick().perform();
    鼠標雙擊:
        Actions action = new Actions(driver);
        Action.doubleClick().perform();
    鼠標懸停:
        Actions action = new Actions(driver);
        Action.moveToElement().perform();
1七、特殊窗口切換
    Iframe處理
        switchTo()
    彈窗處理
        switchTo()
        getWindowHandles()
1八、3種等待的分類
    強制等待    Thread.sleep()
        若是調用就一直等下去
    顯示等待    
        new WebDriverWait(driver,15).until(
            ExpectedConditions.presenceOfElementLocated(By.cssSelector("css locator"))
        );
        若是在規定時間內找到元素就繼續操做,若是沒有找到就報錯
    隱式等待
        Driver.manager().timeouts.implicitlyWait(10,TimeUnit.SECONDS);
        全局的,如上10秒之內每隔多少秒去找,找到了就進行下一步
1九、自動化測試
    自動化的目的:
        減小人力成本
        完成大量重複工做
        提升測試效率
        保證工做的一致性
        完成手工不能完成的工做
20、Maven的使用
    Maven簡介
        Maven是一個項目管理工具,提供了一整套完整的構建聲明週期框架
    Maven的做用
        構建、文檔生成、報告、依賴
2一、重構
    重構就是經過調整程序代碼,但並不改變程序的功能特徵,達到改善軟件的質量、性能,使程序的設計模式和架構更趨合理,更容易被理解,提升軟件的擴展性和維護性。

————————————————版權聲明:本文爲CSDN博主「Sunshicy」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處連接及本聲明。原文連接:https://blog.csdn.net/sunshicy/article/details/80305750css

相關文章
相關標籤/搜索