Selenium 并不像QTP那樣讓人一下子明白是什么?它是編程人員的愛,但它卻對測試新手產(chǎn)生了很大的阻礙。
Selenium 是啥?
Selenium RC是啥?
Webdriver 又是啥?
RC 和 Webdriver 是啥關(guān)系?
Webdriver 和編程語言啥關(guān)系?
Selenium 能并行執(zhí)行腳本嘛?
Selenium 能做移動端自動化么?
這里蟲師用簡單方式,告訴你,他們錯綜復(fù)雜的關(guān)系。理順了它們之間的關(guān)系才能真正使用它。
Selenium 是什么?
Selenium 是web自動化測試工具集,包括IDE、Grid、RC(selenium 1.0)、WebDriver(selenium 2.0)等。
Selenium IDE 是firefox瀏覽器的一個插件。提供簡單的腳本錄制、編輯與回放功能。
Selenium Grid 是用來對測試腳步做分布式處理,F(xiàn)在已經(jīng)集成到selenium server 中了。
RC和WebDriver 更多應(yīng)該把它看成一套規(guī)范,在這套規(guī)范里定義客戶端腳步與瀏覽器交互的協(xié)議。以及元素定位與操作的接口。
WebDriver是什么?
對于剛接觸selenium自動化測試的同學來說不太容易理解API是什么,它到底和編程語言之是什么關(guān)系。
http://www.w3.org/TR/2013/WD-webdriver-20130117/
當初,在剛學selenium (webdriver)的時候花了一個星期來翻譯這個文檔,后來也沒弄明白,它是啥。其實它是一層基礎(chǔ)的協(xié)議規(guī)范。
假如說:Webdriver API(接口規(guī)范)說,我們要提供一個頁面元素id的定位方法。
Ruby的webdriver模塊是這么實現(xiàn)的:
require "selenium-webdriver" #導入ruby版的selenium(webdriver)
find_element(:id, "xx") #id定位方法
C#的webdriver模塊是這么實現(xiàn)的:
using OpenQA.Selenium;
using OpenQA.Selenium.Firefox; //導入C#版的selenium(webdriver)
FindElement(By.Id("xx")) //id定位方法
python的webdriver模塊是這么實現(xiàn)的:
from selenium import webdriver #導入python版的selenium(webdriver)
find_element_by_id("xx") #id定位方法
Java的webdriver模塊是這么實現(xiàn)的:
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;//導入java版的selenium(webdriver)
findElement(By.id("xx")) //id定位方法
Robot Framework + selenium
因為Robot Framework 對于底層過于封裝,所以,我們看不到語言層面的方法定義。所以,Robot Framework 提供給我們的方法如下:
1、導入Robot Framework 版本的selenium(webdriver)
2、使用id方法
Click element
Id=xx
需要說明的是 webdriver API 只提供了web頁面操作的相關(guān)規(guī)范,比如元素定位方法,瀏覽器操作,獲取web頁元素屬性等。