<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                [TOC] ## 一、自動化測試基礎知識 ### 1.1 為什么要進行自動化測試? 1. 解決-回歸測試 2. 解決-壓力測試 3. 解決-兼容性測試 4. 提高測試效率,保證產品質量 回歸測試:項目在發新版本之后對項目之前的功能進行驗證; 壓力測試:可以理解多用戶同時去操作軟件,統計軟件服務器處理多用戶請求的能力 兼容性測試:(1.瀏覽器 2.分辨率 3.操作系統) <br /> ### 1.2 自動化測試相關知識 優點 ~~~ 1. 較少的時間內運行更多的測試用例; 2. 自動化腳本可重復運行; 3. 減少人為的錯誤; 4. 測試數據存儲 ~~~ 誤區 ~~~ 1.自動化測試可以完全替代手工測試 2.自動化測試一定比手工測試厲害 3.自動化測試可以發掘更多的BUG 4.自動化測試適用于所有功能 ~~~ 自動化測試分類 ~~~ 1.Web-自動化測試(本階段學習) 2.移動-自動化測試 3.接口-自動化測試 4.單元測試-自動化測試 ~~~ ### 1.3 自動化測試分類 1. Web自動化測試【本階段學習】 ? 2. 移動自動化測試(app自動化) ? 3. 接口自動化(工具、代碼) ? 4. 單元測試 <br /> ### 1.4 web自動化測試 概念:讓程序代替人為對web項目進功能驗證過程 什么web項目適合自動化? ? 1. 需求變動不頻繁 ? 2. 需要回歸測試項目 ? 3. 項目周期長 ? web自動化開始進行階段? ? 功能測試完畢(手工測試) web自動化所屬分類 1. 黑盒測試(功能測試) 2. 白盒測試(單元測試) 3. 灰盒測試(接口測試) 提示: 1. 以上分類為站在代碼可見度上劃分 2. web自動化測試屬于黑盒 <br /> ## 二、web自動化測試工具選擇 ### 2.1 主流的Web自動化測試工具 ~~~ 1.QTP QTP是一個商業化的功能測試工具,收費,支持web,桌面自動化測試。 ? 2. Selenium(本階段學習) Selenium是一個開源的web自動化測試工具,免費,主要做功能測試。 ? 3. Robot framework(2014年停止更新) Robot framework是一個基于 Python可擴展地關鍵字驅動的測試自動化框架。 ~~~ <br /> ### 2.2 什么是Selenium? 概念: Selenium是一個用于Web應用程序測試的工具;中文的意思(硒) <br /> ### 2.3 Selenium特點 ~~~ 1. 開源軟件:源代碼開放可以根據需要來增加工具的某些功能 2. 跨平臺:linux 、windows 、mac 3. 支持多種瀏覽器:谷歌、火狐、IE等等 4. 支持多語言:Java、Python、C#、JavaScript、Ruby等 5. 成熟穩定:目前已經被google,百度,騰訊等公司廣泛使用 6. 功能強大:能夠實現類似商業工具的大部分功能,因為開源性,可實現定制化功能 ~~~ <br /> ### 2.4 Selenium家族(發展史) ~~~ 版本: selenium1.0 1.gelenium IDE(錄制自動化代碼工具) 2.gelenium Grid(分布式工具:同時啟動多個瀏覽器) 3.gelenium RC(通過JS模擬瀏覽器,實現自動化方式) ? selenium2.0(穩定推薦版) selenium2.0 = selenium1.0+webdriver ? selenium3.0 2.0升級版,支持JAVA8、windows10 Edge瀏覽器、safa瀏覽器 ? 提示:無論是通過2.0還是3.0編寫的自動化腳本,API方法是不變的,唯一不同就是環境不同。 ~~~ <br /> ## 三、環境搭建 1.環境搭建 基于 Python環境搭建 ~~~ 1.Python開發環境 2.安裝 selenium包 3.安裝瀏覽器 4.安裝瀏覽器驅動 -- 保證能夠用程序驅動瀏覽器,實現自動化測試 ~~~ ### 3.1 安裝selenium包 1)通過pip包管理工具去安裝(前提: Python3安裝完畢且能正常運行) ~~~ 安裝:pip3 install selenium 卸載:pip3 uninstall selenium 查看版本:pip3 show selenium ? 擴展: 1.安裝指定版本 pip install selenium==版本號 如:pip install selenium==2.48.0 2.如何查看可安裝按本?指定版本號為錯誤版本號 3.pip是 python中包管理工具(可以安裝、卸載、查看 python工具) 4.pip list查看通過pip包管理工具安裝的插件或工具 提示: 1.使用pip必須聯網 2.默認安裝python3.5版本以上工具,自帶pip包管理具,默認會自動安裝并且添加path環境變量 ~~~ 2) 通過pycharm去安裝【推薦】 ~~~ 推薦原因:安裝到當前工程環境內。 操作: Fi1e(文件菜單)--setting--> Project:當前工程名稱-> Project Interpreter--點擊+號安裝相應包和版本 提示:如果使用 pip insta11 插件名 安裝過后,打開pycharm,導包操作時,提示找不到此包, 那就說明pip insta11默認安裝的路徑和當前工程所有的環境路徑不是同一個環境, 進行以上處理可以解決問題。 ~~~ ### 3.2 瀏覽器及驅動安裝 火狐瀏覽器 ~~~ 1. Firefox48以上版本 selenium3.x+ Firefox驅動(geckodriver) 驅動下載地址:https://github.com/mozilla/geckodriver/releases ? 2. Firefox3以下版本 selenium2.x+內置驅動 ~~~ 谷歌瀏覽器 ~~~ selenium2.x/3.x+ Chrome驅動( chromedriver) 驅動下載地址:https://sites.google.com/a/chromium.org/chromedriver/downloads ~~~ **應用:** 1. 將瀏覽器驅動放到指定文件夾 2. 將瀏覽器驅動所在目錄添加到系統path環境變量中 (選中我的電腦/此電腦-右鍵->屬性-->高級系統設置-->高級(環境變量)-->path(如果是win7,路徑與路徑之間需要添加分號)) **注意:** 1. 瀏覽器驅動必須和瀏覽器版本對應(查看下載驅動時,有告知響應的瀏覽器版本) 2. 獲取瀏覽器48版本以下,內置驅動。 <br /> ### 3.3 科普path 說明: 指定系統搜索的目錄 dos命令默認搜素順序 1. 檢測是否為內部命令 2. 檢測是否為當前目錄下可執行文件 3. 檢測path環境變量指定的目錄 **提示:** 1. 如果以上搜素目錄都檢測不到輸入的命令或可執行文件,系統會拋出不是內部或外部命令 2. 在web環境中,如果不將瀏覽器驅動添加到path中, selenium在運行的時侯會提示瀏覽器驅動有誤。 <br /> ### 3.4 第一個案例 ~~~ 通過程序啟動瀏覽器,并打開百度首頁,暫停3秒,關閉瀏覽器 ~~~ 實現步驟: ~~~ # 導包 from selenium import webdriver from time import time ? # 創建瀏覽器驅動對象 driver= webdriver.Firefox() ?# Firefox瀏覽器 driver= webdriver. Chrome() ?#Chrome瀏覽器 # 打開web頁面 driver.get("http://www.baidu.com/") # 暫停3秒 sleep(3) ? # 關閉瀏覽器驅動 driver.quit() ~~~ <br /> ## 四、元素定位 **如何進行元素定位?** ~~~ html頁面由標簽構成,標簽的基本格式如下: <標簽名 屬性名1=“屬性值1” 屬性名2="屬性值2">文本</標簽名> 示例: <input id="username" type="text" name="username" placeholder="用戶名" /> <div id="my_cart"> <span>我的購物車</span> </div> ~~~ 元素定位就是通過元素的信息或元素層級結構來定位元素的。 <br /> **瀏覽器開發者工具** ~~~ 瀏覽器開發者工具就是給專業的web應用和網站開發人員使用的工具。包含了對HTML查看和編輯、Javascript控制臺、網絡狀況監視等功能,是開發JavaScript、CSS、HTML和Ajax的得力助手。 ? 作用:快速定位元素,查看元素信息 ~~~ ### 4.1 為什么要使用元素定位? 要使用web自動化操作元素,必須首先找到此元素。 ### 4.2 定位工具 火狐: Firebug(F12獲取直接點擊 Friebug圖標) 谷歌:F12鍵(開發者工具) ### 4.3 定位元素時依賴于什么? 標簽名 屬性 層級 路徑 ### 4.4 定位方式 ~~~ Selenium提供了八種定位元素方式 1. id 2. name 3. c1ass_name(使用元素的c1ass屬性定位) 4. tag_name(標簽名稱<標簽名.../>) 5. 1ink_text(定位超鏈接a標簽) 6. partial_link_text(定位超鏈接a標簽 模糊) 7. xpath(基于元素路徑) 8. css(元素選擇器) ? 匯總: 1.基于元素屬性特有走位方式(id\name\class_name) 2.基于元素標簽名稱定位: tag_name 3.定位超鏈接文本(1ink_text、 partia1_1ink_text) 4.基于元素路徑定位(xpath) 5.基于選擇器(css) ~~~ **id定位** 說明: ? 1.通過元素的id屬性定位,id一般情況下在當前頁面中是唯一。 ? 方法: ? driver. find\_element\_by\_id(id) ? 提示: ? 元素必須要有id屬性。 案例: ~~~ from selenium import webdriver from time import sleep ? driver = webdriver.Chrome() ? # 注意:\反斜杠在 python是轉義字符 r:修飾的字符,如果字符中有轉義字符,不進行轉義使用 ur1=r"E:\課堂\北京\北京十期\Day01\02其他資料\瀏覽器\課堂素材\注冊A.htm1" driver.get(url) ? # 使用雙反斜杠進行轉義操作 url="E:\\課堂\\北京\北京十期\Day01\\02_其他資料\\瀏覽器\課堂素材\\注冊A.html" ? #查找元素 用戶名并輸入admin driver.find_element_by_id("userA").send_keys("admin") ? #查找元素 密碼框并輸入123456 driver.find_element_by_id("passwordA").send_keys("123456") ? sleep(3) driver.quit() ~~~ **name定位** 說明: 1.通過元素的name屬性來定位,name一般名稱為重復。 方法: drivr.find\_element\_by\_name(name) 提示: 元素必須要有name屬性 案例: ~~~ from selenium import webdriver from time import sleep ? driver = webdriver.Chrome() ? # 使用雙反斜杠進行轉義操作 url="E:\\課堂\\北京\北京十期\Day01\\02_其他資料\\瀏覽器\課堂素材\\注冊A.html" driver.get(url) ? #查找元素 用戶名并輸入admin driver.find_element_by_name("userA").send_keys("admin") ? #查找元素 密碼框并輸入123456 driver.find_element_by_name("passwordA").send_keys("123456") ? sleep(3) driver.quit() ~~~ **class_name定位:** ``` 說明: 1.通過元素的class屬性來定位,class屬性一般為多個值。 方法: driver.find_element_by_class_name() 提示: 元素必須要有class屬性 提示: id:一般為唯一標識符。 name:可以重名 class:多個命名 ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看