Selenium詳細(xì)教程請(qǐng)進(jìn)入以下網(wǎng)站進(jìn)行下載
http://yunpan.cn/QXFMeVsduUfmK
一、 簡(jiǎn)述
1. 介紹
Selenium是ThoughtWorks專門為Web應(yīng)用程序編寫的一個(gè)驗(yàn)收測(cè)試工具。
Selenium測(cè)試直接運(yùn)行在瀏覽器中,就像真正的用戶在操作一樣。支持的瀏覽器包括IE、 Mozilla Firefox、Google Chrome等。這個(gè)工具的主要功能包括:測(cè)試與瀏覽器的兼容性,測(cè)試系統(tǒng)功能。支持自動(dòng)錄制動(dòng)作和自動(dòng)生成Net、Java、Perl等不同語(yǔ)言的測(cè)試腳本。
2. 優(yōu)勢(shì)
1. 更加逼真的模擬用戶操作網(wǎng)頁(yè)
2. 跨平臺(tái)(Windows,Linux,mac,android,IOS) ,
3. 跨瀏覽器(Firefox,IE,Chrome, Opera,Safari)
4. 多語(yǔ)言支持(java,c#,python,ruby,php,perl,js)
5. 開(kāi)源免費(fèi)
6. 綜上所述,selenium是可以個(gè)性定制的,可以適應(yīng)不同團(tuán)隊(duì)的,不要錢的自動(dòng)化web測(cè)試工具
3. Selenium與QTP
共同特征
1. 都可以進(jìn)行Web測(cè)試
2. 都支持錄制回放
3. 兩者錄制的腳本都有較差的兼容性,都需要有經(jīng)驗(yàn)的開(kāi)發(fā)人員進(jìn)行調(diào)整。
QTP的優(yōu)勢(shì)
1. QTP 功能很完善,界面很強(qiáng)大。還對(duì)window等其他程序的支持
2. QTP錄制功能強(qiáng)大,而Selenium IDE只是一個(gè)火狐插件,功能有限。
3. QTP有對(duì)象庫(kù),方便我們管理對(duì)象,而selenium只能進(jìn)行編碼維護(hù),或者自己編寫界面。
4. QTP有非常優(yōu)秀的測(cè)試報(bào)告,Selenium自己沒(méi)有,需要集成其他報(bào)表產(chǎn)品(比如結(jié)合JUnit)
5. QTP對(duì)測(cè)試人員的要求低,Selenium不會(huì)編程能做的事情有限。
Selenium的優(yōu)勢(shì)
1. 用戶仿真:Selenium在瀏覽器后臺(tái)執(zhí)行,它通過(guò)修改HTML的DOM(文檔對(duì)象模型)來(lái)執(zhí)行操作,實(shí)際上是通過(guò) javascript來(lái)控制的。執(zhí)行時(shí)窗口可以最小化,可以在同一機(jī)器執(zhí)行多個(gè)測(cè)試。而QTP完全模擬終端用戶,獨(dú)占屏幕,只能開(kāi)啟一個(gè)獨(dú)占的實(shí)例。
2. Selenium一個(gè)機(jī)器可以跑多種腳本,但QTP獨(dú)占模式必須要大量測(cè)試機(jī)器。
3. 瀏覽器支持。 Selenium支持IE, Firefox, Safari和Opera等,而QTP僅支持IE和Firefox。
4. Selenium2 是完全面向?qū)ο蟮脑O(shè)計(jì) ,讓開(kāi)發(fā)者更加得心應(yīng)手,QTP不是。
5. Selenium可以用 java,c#,python,ruby,php,perl,HTML,但是QTP只能使用VB來(lái)編寫。
6. QTP只支持Windows,Selenium可以支持Windows,Linux,mac,android,IOS等。
7. Selenium的開(kāi)發(fā)環(huán)境由公司決定, QTP只能在自己的IDE中使用。
8. QTP的代碼提示等功能太弱,加大初學(xué)者難度。
9. 最重要的是Selenium不要錢。
4. 參考文檔
官網(wǎng)http://docs.seleniumhq.org/
幫助文檔http://docs.seleniumhq.org/docs/
5. Selenium版本介紹
· Selenium 主要分為
Selenium core:為selenium的核心部分,現(xiàn)在已經(jīng)不單獨(dú)使用了;
Selenium RC(Selenium1):為上一代產(chǎn)品,現(xiàn)在已經(jīng)被2代所取代;
Selenium IDE:是火狐上的錄制插件;
Selenium Grid(用于并發(fā)測(cè)試) ;
Selenium WebDriver(Selenium2)
· Selenium2已經(jīng)包含了一代所有代碼,并實(shí)現(xiàn)了一些一代無(wú)法完成的功能,并具有面向?qū)ο螅卣剐院玫忍攸c(diǎn)。
二、 下載
1. Selenium 下載
1)進(jìn)入官網(wǎng)下載http://www.seleniumhq.org/download/
2)
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/
或者在火狐中下載
三、 Selenium IDE的使用
1. 界面介紹
安裝好IDE后會(huì)在FF中工具選擇下有Selenium IDE的選項(xiàng)
點(diǎn)擊打開(kāi)
打開(kāi)之后出現(xiàn)如下界面
以上
1填寫待測(cè)網(wǎng)站站點(diǎn)
2腳本的速度設(shè)置,執(zhí)行暫停等
3錄制 默認(rèn)是進(jìn)入錄制狀態(tài),點(diǎn)擊一下取消錄制
4測(cè)試腳本
5測(cè)試的代碼
6日志,消息等
2. 關(guān)鍵設(shè)置
點(diǎn)擊options
Format
如果出現(xiàn): (want the formats back?click read more,這是無(wú)法把錄制的腳本轉(zhuǎn)換為其他語(yǔ)言的。請(qǐng)點(diǎn)擊options下面的options…進(jìn)入如下設(shè)置界面
選擇標(biāo)紅的選項(xiàng),點(diǎn)擊確定。
出現(xiàn)以下選項(xiàng)為設(shè)置成功
3. 使用舉例
上圖標(biāo)明了一些Selenium IDE的主要功能。其中,由Command,Target,Value組成的表格就是腳本,每個(gè)腳本都是由一條一條的Action(行為)組成,而每個(gè) Action又由(Command,Target,Value)三者組成。Command就是動(dòng)作,Target指的是Web中的某個(gè)對(duì)象,比如:文字,輸入框等等,,而Value就是這個(gè)對(duì)象的值。
當(dāng)彈出上面的IDE窗口后,我們就可以開(kāi)始Selenium的腳本錄制了,右上角有個(gè)紅色的圓點(diǎn),當(dāng)它下按時(shí)(如上圖)就表示IDE正在進(jìn)行腳本錄制。 OK,開(kāi)始錄制,錄制的時(shí)候,直接操作Firefox瀏覽器窗口就可以了,IDE會(huì)自動(dòng)記錄你的操作的,下面我演示一個(gè)例子:
上圖例子中,我的操作步驟如下:
(1).在地址欄輸入:http://www.baidu.com/
(2).登陸百度首頁(yè)后,在查詢框輸入“hyddd”。
(3).按“百度一下”按鈕
(4).進(jìn)入搜索結(jié)果頁(yè)面后,右鍵單擊第一條記錄(即:hyddd - 博客園),在右鍵彈出菜單中,單擊“Verify TestPersent hyddd - 博客園”。
(5).單擊第一條記錄(即:進(jìn)入hyddd - 博客園)
(6).Firefox彈出一個(gè)新Tab頁(yè)面,并進(jìn)入了我的博客。
OK,現(xiàn)在看看我們的Selenium IDE錄制的結(jié)果吧:>
上圖中,中間的表格就是錄制的結(jié)果,你可以按“運(yùn)行腳本”重新回放腳本看看,值得注意的是,在運(yùn)行時(shí),F(xiàn)irefox可能會(huì)認(rèn)為腳本中最后一個(gè)操作(即: 步驟6)為非法彈出框,瀏覽器會(huì)自動(dòng)阻止其彈出,這個(gè)需要設(shè)置一下Firefox,具體位置 是:Firefox->Menubar->Tools->options->content->Block pop-up Window,你可以把鉤去掉或者在Exceptions里面添加相應(yīng)的網(wǎng)址。
恩,到此為止,腳本錄制圓滿完成:>
在運(yùn)行腳本后,你會(huì)發(fā)現(xiàn)IDE表格的顏色發(fā)生了變化,運(yùn)行前,腳本表格為白色,成功運(yùn)行完畢后,表格為青色,其中還分為深青色和淺青色兩種,淺青色表示: 動(dòng)作成功,如:打開(kāi)網(wǎng)頁(yè)成功,點(diǎn)擊按鈕成功等等,而深青色表示:判斷正確,如:“hyddd - 博客園”這段文字在頁(yè)面中存在等等。 看完正確,現(xiàn)在我們看看出錯(cuò)時(shí)的情況吧。
出錯(cuò)時(shí),表格可能會(huì)出現(xiàn)兩種顏色,一種是淺粉紅色,一種是深粉紅色。淺粉紅色表示判斷結(jié)果為false,這種情況案例還是會(huì)繼續(xù)執(zhí)行下去,判斷的失敗不會(huì)影響案例的運(yùn)行,深粉紅色表示動(dòng)作失敗,如:沒(méi)有找到按鈕等(如上圖),這種情況下案例會(huì)停止運(yùn)行。
4. 代碼轉(zhuǎn)換
點(diǎn)擊以下可以轉(zhuǎn)化為對(duì)應(yīng)語(yǔ)言的版本
選擇 c#、NUint?WebDriver
警告轉(zhuǎn)換為c#之后就不能再IDE中執(zhí)行了
點(diǎn)擊確定 為以下c#代碼
可以復(fù)制一下代碼粘貼到vs中進(jìn)行運(yùn)行
四、 Selenium 在vs2010的編碼
1. 建立selenium測(cè)試項(xiàng)目
2. 編碼
1創(chuàng)建一個(gè)項(xiàng)目,這兒我以控制臺(tái)程序?yàn)槔?/font>
2 下載selenium c#包 [selenium-dotnet-2.32.0.zip]并解壓
3增加引用
我是用的donet4.0所以選擇4.0的。
全選所有DLL文件,點(diǎn)擊OK
項(xiàng)目引用會(huì)有如下文件
復(fù)制IDE中代碼 修改之后就可以跑起來(lái)第一個(gè)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的ì?使o1用??");
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;
}
}
}
}