天天看點

web自動化測試(3):web功能自動化測試selenium基礎課

繼上篇《web自動化測試(1):為什麼選擇selenium做自動化測試》,本文介紹如selenium使用

做UI自動化測試,需要什麼技能

  1. 前端相關技術:HTML、XML、JavaScript、TCP/IP協定等
  2. 合适的工具選型:比如selenium,比如UTF等;
  3. 程式設計語言:selenium支援多種語言,java、C++、python、JavaScript等
  4. 需求分析:項目類型,特質,生命周期,是否适合開展自動化測試等;

如果隻是做UI差異與還原度對比,用不着selenium大駕,phantomjs截圖對比就好,推薦一個基于dom diff算法UI監控工具:page-monitor

本來準備萬字長文,好好嗑叨一番,但是,覺得實在務必要。官網的介紹都很細:https://selenium.dev/documentation/en/,中文把en改為zh-cn即可:https://selenium.dev/documentation/zh-cn/

慕課網教程:Java Web自動化測試 Selenium基礎到企業實際應用 https://coding.imooc.com/class/359.html

selenium現在官網分為三件套:

  1. Selenium IDE:是嵌入到浏覽器的插件(目前僅支援chrome、Firefox),錄制和回放Selenium腳本,錄制好的腳本轉換成各種Selenium WebDriver支援的程式語言,進而擴充到更廣泛的浏覽器類型;
  2. Selenium WebDriver:可支援多種語言,用于操作浏覽器的一套API;支援各類型浏覽器,跨作業系統;
  3. Selenium Grid:用于遠端控制、分布式部署等,均可實作Selenium腳本的高效執行與拓展;使得自動化測試可以并行運作,甚至在跨平台、異構的環境中運作,包括主流的移動端環境,如Android、iOS

Selenium IDE操作指北

關鍵是chrome由于偉大的牆存在,下載下傳不了chrome Selenium IDE擴充插件,如有需要,去本人的收集清單看看《Chrome擴充程式導出備份與本地導入浏覽器 》

首先是Selenium IDE錄制頁面操作腳本,這個其實不做測試,平時玩着也蠻有趣的,操作如下

1、點選Selenium IDE插件,彈出界面,建立工程,輸入測試用例名,點選ok,打開一個新視窗,(後面預設開始錄制,你所有的操作沒有按停止前,都是在錄制轉态)

web自動化測試(3):web功能自動化測試selenium基礎課

2、再次點選,Selenium IDE插件,彈出界面,關閉錄制按鈕

web自動化測試(3):web功能自動化測試selenium基礎課

3、操作界面。

web自動化測試(3):web功能自動化測試selenium基礎課

這裡的圖很草。其實可以随便玩。像小孩子玩手機一樣,左monkey測試,點多了自然會了

WebDriver操作

Selenium 的核心是 WebDriver,這是一個編寫指令集的接口,可以在許多浏覽器中互換運作。

它允許使用者模拟終端使用者執行的常見活動;雖然 Selenium 主要用于網站的前端測試,但其核心是浏覽器使用者代理庫。

webDrive直接下即可,https://selenium.dev/downloads/,前端,npm i selenium-webdriver

接着就是編寫腳本,也可以從上面Selenium IDE

// 不管是java 還是python,都是需要導入webdriver包
// 庫下載下傳 https://selenium.dev/documentation/zh-cn/selenium_installation/installing_selenium_libraries/
const {Builder, By, Key, until} = require('selenium-webdriver');

(async function example() {
    let driver = await new Builder().forBrowser('chrome').build();
    try {
        // 控制浏覽器:https://selenium.dev/documentation/zh-cn/webdriver/browser_manipulation/
        // 打開浏覽器,WebDriver通常可以說有一個阻塞API。web平台本質上是異步的,是以WebDriver不跟蹤DOM的實時活動狀态。
        await driver.get('https://www.zhoulujun.cn/search.html?m=search&c=index&a=init&siteid=1&typeid=1&ajax=1&q=tar');

        // 找到搜尋框(也可以 By.id('bdcsMain')),輸入test,回車。
        await driver.findElement(By.name('q')).sendKeys('test', Key.ENTER);
        // 搜尋頁面,找到
        let firstResult = await driver.wait(until.elementLocated(By.css('h3>div')), 10000);
        console.log(await firstResult.getAttribute('textContent'));
        // 關閉浏覽器
        browser.close()
    }
    finally{
        driver.quit();
    }
})();      

webDrive庫的安裝:https://selenium.dev/documentation/zh-cn/selenium_installation/installing_selenium_libraries/

webDrive驅動安裝:https://selenium.dev/documentation/zh-cn/selenium_installation/installing_webdriver_binaries/

如果不安裝驅動,就會報錯:The ChromeDriver could not be found on the current PATH. Please download the latest version of the

chrome驅動如下:http://chromedriver.storage.googleapis.com/80.0.3987.106/chromedriver_win32.zip

查找web元素,是selenium測試的重點,https://selenium.dev/documentation/zh-cn/webdriver/web_element/

查找元素的九種方法

By查找

  1. By.id
  2. By.name
  3. By.tagName
  4. By.className
  5. By.xpath  //常用
  6. By.css("#kw")
  7. By.partialLinkText //模糊比對
  8. By.linkText("糯米") eg:<a>糯米<a/>

其實也就是我們常見的 css jquery 元素選擇器而已。

browser查找

browser.find_element_by_css_selector('.logo')

這個去查API,或者查找browser方法

操作頁面元素的方法

擷取元素後,可以對頁面元素執行相應的動作

input.clear()

input.send_keys('zhoulujun',Key.ENTER)

input.click()

在頁面執行JavaScript

也可以寫js執行

browser.execute_script('window.scrollTo(0,document.body.scrollHeight)')

browser.execute_script('alert("To Bottom")')

Selenium Grid

Grid服務網格, 一台伺服器作為轉發器(hub)将JSON格式的測試指令轉發到1台或多台注冊的節點。 測試任務通過跟轉發器(hub)的互動來操作遠端浏覽器執行個體。 轉發器(hub)維護了一個可供使用的注冊伺服器清單,也允許我們通過轉發器(hub)來控制這些執行個體。允許我們在多台節點伺服器上并行執行測試, 同時也中心化的管理多個浏覽器版本,多種浏覽器的配置。(以替代傳統的基于個人的測試)

web自動化測試(3):web功能自動化測試selenium基礎課

按照官方的說法,下載下傳 selenium-server-standalone JAR 檔案,然後放在Tomcat起個服務就可。具體怎麼配置,有空了再來寫一篇。

同行文章推薦:

繼續閱讀