1、 簡述javascript
1. 介紹php
Selenium是ThoughtWorks專門爲Web應用程序編寫的一個驗收測試工具。html
Selenium測試直接運行在瀏覽器中,就像真正的用戶在操做同樣。支持的瀏覽器包括IE、 Mozilla Firefox、Google Chrome等。這個工具的主要功能包括:測試與瀏覽器的兼容性,測試系統功能。支持自動錄製動做和自動生成Net、Java、Perl等不一樣語言的測試腳本。java
2. 優點python
1. 更加逼真的模擬用戶操做網頁android
2. 跨平臺(Windows,Linux,mac,android,IOS) ,web
3. 跨瀏覽器(Firefox,IE,Chrome, Opera,Safari) 編程
4. 多語言支持(java,c#,python,ruby,php,perl,js) c#
5. 開源免費 瀏覽器
6. 綜上所述,selenium是能夠個性定製的,能夠適應不一樣團隊的,不要錢的自動化web測試工具
3. Selenium與QTP
共同特徵
1. 均可以進行Web測試
2. 都支持錄製回放
3. 二者錄製的腳本都有較差的兼容性,都須要有經驗的開發人員進行調整。
QTP的優點
1. QTP 功能很完善,界面很強大。還對window等其餘程序的支持
2. QTP錄製功能強大,而Selenium IDE只是一個火狐插件,功能有限。
3. QTP有對象庫,方便咱們管理對象,而selenium只能進行編碼維護,或者本身編寫界面。
4. QTP有很是優秀的測試報告,Selenium本身沒有,須要集成其餘報表產品(好比結合JUnit)
5. QTP對測試人員的要求低,Selenium不會編程能作的事情有限。
Selenium的優點
1. 用戶仿真:Selenium在瀏覽器後臺執行,它經過修改HTML的DOM(文檔對象模型)來執行操做,其實是經過 javascript來控制的。執行時窗口能夠最小化,能夠在同一機器執行多個測試。而QTP徹底模擬終端用戶,獨佔屏幕,只能開啓一個獨佔的實例。
2. Selenium一個機器能夠跑多種腳本,但QTP獨佔模式必需要大量測試機器。
3. 瀏覽器支持。 Selenium支持IE, Firefox, Safari和Opera等,而QTP僅支持IE和Firefox。
4. Selenium2 是徹底面向對象的設計 ,讓開發者更加駕輕就熟,QTP不是。
5. Selenium能夠用 java,c#,python,ruby,php,perl,HTML,可是QTP只能使用VB來編寫。
6. QTP只支持Windows,Selenium能夠支持Windows,Linux,mac,android,IOS等。
7. Selenium的開發環境由公司決定, QTP只能在本身的IDE中使用。
8. QTP的代碼提示等功能太弱,加大初學者難度。
9. 最重要的是Selenium不要錢。
4. 參考文檔
幫助文檔http://docs.seleniumhq.org/docs/
5. Selenium版本介紹
• Selenium 主要分爲
Selenium core:爲selenium的核心部分,如今已經不單獨使用了;
Selenium RC(Selenium1):爲上一代產品,如今已經被2代所取代;
Selenium IDE:是火狐上的錄製插件;
Selenium Grid(用於併發測試) ;
Selenium WebDriver(Selenium2)
• Selenium2已經包含了一代全部代碼,並實現了一些一代沒法完成的功能,並具備面向對象,拓展性好等特色。
2、 下載
1. Selenium 下載
1)進入官網下載http://www.seleniumhq.org/download/
2. 其餘下載
Firefox下載 http://firefox.com.cn/download/
Firebug下載:https://addons.mozilla.org/firefox/addon/1843
FirePath 下載 https://addons.mozilla.org/zh-CN/firefox/addon/firepath/
或者在火狐中下載
3、 Selenium IDE的使用
1. 界面介紹
安裝好IDE後會在FF中工具選擇下有Selenium IDE的選項
點擊打開
打開以後出現以下界面
以上
1填寫待測網站站點
2腳本的速度設置,執行暫停等
3錄製 默認是進入錄製狀態,點擊一下取消錄製
4測試腳本
5測試的代碼
6日誌,消息等
2. 關鍵設置
點擊options
Format
若是出現: (want the formats back?click read more,這是沒法把錄製的腳本轉換爲其餘語言的。請點擊options下面的options…進入以下設置界面
選擇標紅的選項,點擊肯定。
出現如下選項爲設置成功
3. 使用舉例
上圖標明瞭一些Selenium IDE的主要功能。其中,由Command,Target,Value組成的表格就是腳本,每一個腳本都是由一條一條的Action(行爲)組成,而每一個 Action又由(Command,Target,Value)三者組成。Command就是動做,Target指的是Web中的某個對象,好比:文字,輸入框等等,,而Value就是這個對象的值。
當彈出上面的IDE窗口後,咱們就能夠開始Selenium的腳本錄製了,右上角有個紅色的圓點,當它下按時(如上圖)就表示IDE正在進行腳本錄製。 OK,開始錄製,錄製的時候,直接操做Firefox瀏覽器窗口就能夠了,IDE會自動記錄你的操做的,下面我演示一個例子:
上圖例子中,個人操做步驟以下:
(1).在地址欄輸入:http://www.baidu.com/
(2).登錄百度首頁後,在查詢框輸入「hyddd」。
(3).按「百度一下」按鈕
(4).進入搜索結果頁面後,右鍵單擊第一條記錄(即:hyddd - 博客園),在右鍵彈出菜單中,單擊「Verify TestPersent hyddd - 博客園」。
(5).單擊第一條記錄(即:進入hyddd - 博客園)
(6).Firefox彈出一個新Tab頁面,並進入了個人博客。
OK,如今看看咱們的Selenium IDE錄製的結果吧:>
上圖中,中間的表格就是錄製的結果,你能夠按「運行腳本」從新回放腳本看看,值得注意的是,在運行時,Firefox可能會認爲腳本中最後一個操做(即: 步驟6)爲非法彈出框,瀏覽器會自動阻止其彈出,這個須要設置一下Firefox,具體位置 是:Firefox->Menubar->Tools->options->content->Block pop-up Window,你能夠把鉤去掉或者在Exceptions裏面添加相應的網址。
恩,到此爲止,腳本錄製圓滿完成:>
在運行腳本後,你會發現IDE表格的顏色發生了變化,運行前,腳本表格爲白色,成功運行完畢後,表格爲青色,其中還分爲深青色和淺青色兩種,淺青色表示: 動做成功,如:打開網頁成功,點擊按鈕成功等等,而深青色表示:判斷正確,如:「hyddd - 博客園」這段文字在頁面中存在等等。 看完正確,如今咱們看看出錯時的狀況吧。
出錯時,表格可能會出現兩種顏色,一種是淺粉紅色,一種是深粉紅色。淺粉紅色表示判斷結果爲false,這種狀況案例仍是會繼續執行下去,判斷的失敗不會影響案例的運行,深粉紅色表示動做失敗,如:沒有找到按鈕等(如上圖),這種狀況下案例會中止運行。
4. 代碼轉換
點擊如下能夠轉化爲對應語言的版本
選擇 c#、NUint?WebDriver
警告轉換爲c#以後就不能再IDE中執行了
點擊肯定 爲如下c#代碼
能夠複製一下代碼粘貼到vs中進行運行
1. 創建selenium測試項目
2. 編碼
1建立一個項目,這兒我以控制檯程序爲例
2 下載selenium c#包 [selenium-dotnet-2.32.0.zip]並解壓
3增長引用
我是用的donet4.0因此選擇4.0的。
全選全部DLL文件,點擊OK
項目引用會有以下文件
複製IDE中代碼 修改以後就能夠跑起來第一個selenium腳本了
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using OpenQA.Selenium;
using NUnit.Framework;
using OpenQA.Selenium.Firefox;
namespace ConsoleApplication1
{
[TestFixture]
class Program
{
static void Main(string[] args)
{
Program p = new Program();
p.SetupTest();
p.TheUntitledTest();
p.TeardownTest();
}
private IWebDriver driver;
private StringBuilder verificationErrors;
private string baseURL;
private bool acceptNextAlert = true;
[SetUp]
public void SetupTest()
{
driver = new FirefoxDriver();
baseURL = "http://www.baidu.com/";
verificationErrors = new StringBuilder();
}
[TearDown]
public void TeardownTest()
{
try
{
driver.Quit();
}
catch (Exception)
{
// Ignore errors if unable to close the browser
}
Assert.AreEqual("", verificationErrors.ToString());
}
[Test]
public void TheUntitledTest()
{
driver.Navigate().GoToUrl(baseURL + "/");
driver.FindElement(By.Id("kw")).Clear();
driver.FindElement(By.Id("kw")).SendKeys("selenium");
driver.FindElement(By.Id("su")).Click();
driver.FindElement(By.Id("kw")).Clear();
driver.FindElement(By.Id("kw")).SendKeys("selenium ide的Ì?使º1用®?");
driver.FindElement(By.Id("su")).Click();
}
private bool IsElementPresent(By by)
{
try
{
driver.FindElement(by);
return true;
}
catch (NoSuchElementException)
{
return false;
}
}
private bool IsAlertPresent()
{
try
{
driver.SwitchTo().Alert();
return true;
}
catch (NoAlertPresentException)
{
return false;
}
}
private string CloseAlertAndGetItsText()
{
try
{
IAlert alert = driver.SwitchTo().Alert();
string alertText = alert.Text;
if (acceptNextAlert)
{
alert.Accept();
}
else
{
alert.Dismiss();
}
return alertText;
}
finally
{
acceptNextAlert = true;
}
}
}
}