Web自动化测试 Selenium 1/3

Selenium 名字的来源

在这里,我还想说一下关于 Selenium 名字的来源,很有意思的 : > : Selenium 的中文名为 “ 硒 ” ,是一种化学元素的名字,它 对 汞 ( Mercury )有天然的解毒作用,实验表明汞暴露水平越高,硒对汞毒性的拮抗作用越明显,所以说硒是汞的克星。大家应该知道 Mercury 测试工具系 列吧( QTP , QC , LR , WR... ),他们功能强大,但却价格不菲,大家对此又爱又恨!故 thoughtworks 特意把他们的 Web 开源测试工具命 名为 Selenium ,以此帮助大家脱离汞毒。

产品类别


Selenium IDE


一个用于构造测试脚本的原型工具。它是一个Firefox插件,并且提供了一个易于使用的开发自动化测试的接口。Selenium IDE有一个录制功能,可以记录用户执行的动作,然后可以导出它们作可重用的脚本


Remote Control


Selenium RC是最重要的Seleniumx项目,在WebDriver/Selenium合并产生Selenium 2


WebDriver


Selenium 2是该项目的未来方向,和对Selenium工具包的最新的增加物。


Grid


如果你必须运行你的测试集在多个环境,你可以有不同的远程机器的支持和运行你的测试在同一时间在不同的远程机器上。在任何一种情形下,Selenium都将充分利用并行处理,极大地改善运行你的测试所花费的时间。

 

浏览器支持

官方文档 http://docs.seleniumhq.org/docs/01_introducing_selenium.jsp#supported-browsers-and-platforms

 

实战操作

准备

IE Chrome的Driver安装和准备

https://code.google.com/p/selenium/wiki/ChromeDriver

https://code.google.com/p/selenium/wiki/InternetExplorerDriver

 

RemoteControl的不同浏览器Java代码

package base;

 

import org.openqa.selenium.*;

import org.openqa.selenium.ie.*;

import org.openqa.selenium.remote.*;

import static org.testng.Assert.*;

import org.testng.annotations.*;

import com.thoughtworks.selenium.Selenium;

import java.io.*;

import java.net.*;

 

public class BaseRC {

protected Selenium selenium;

private WebDriver driver = null;

private StringBuffer verificationErrors = new StringBuffer();

 

@Parameters({ "platform", "browser", "version", "url" })

@BeforeTest(alwaysRun = true)

public void setup(String platform, String browser, String version,

String url) throws MalformedURLException, IOException {

DesiredCapabilities caps = null;

 

// Browsers

if (browser.equalsIgnoreCase("Internet Explorer")) {

System.setProperty("webdriver.ie.driver",

"c:\\test\\IEDriverServer.exe");

caps = DesiredCapabilities.internetExplorer();

// IE安全设置

caps.setCapability( InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS,

true);

// browser zoom level must be set to 100%

} else if (browser.equalsIgnoreCase("Firefox")) {

System.setProperty("webdriver.firefox.bin",

"C:\\test\\Firefox4\\firefox.exe");

caps = DesiredCapabilities.firefox();

} else if (browser.equalsIgnoreCase("chrome")) {

System.setProperty("webdriver.chrome.driver",

"c:\\test\\chromedriver.exe");

caps = DesiredCapabilities.chrome();

caps.setCapability(

"chrome.binary",

"C:\\test\\Chrome31\\chrome.exe");

} else if (browser.equalsIgnoreCase("iPad"))

caps = DesiredCapabilities.ipad();

else if (browser.equalsIgnoreCase("Android"))

caps = DesiredCapabilities.android();

 

// Platforms

if (platform.equalsIgnoreCase("Windows"))

caps.setPlatform(org.openqa.selenium.Platform.WINDOWS);

else if (platform.equalsIgnoreCase("MAC"))

caps.setPlatform(org.openqa.selenium.Platform.MAC);

else if (platform.equalsIgnoreCase("Andorid"))

caps.setPlatform(org.openqa.selenium.Platform.ANDROID);

 

// Version

caps.setVersion(version);

driver = new RemoteWebDriver(new URL(

"http://localhost:4444/wd/hub"), caps);

 

selenium = new WebDriverBackedSelenium(driver, url);

}

 

@AfterTest

public void afterTest() {

// Close the browser

driver.quit();

selenium.stop();

 

String verificationErrorString = verificationErrors.toString();

if (!"".equals(verificationErrorString)) {

fail(verificationErrorString);

}

}

 

}

WebDriver的不同浏览器Java代码

package base;

 

import org.openqa.selenium.*;

import org.openqa.selenium.firefox.*;

import org.openqa.selenium.ie.*;

import org.openqa.selenium.chrome.*;

import org.openqa.selenium.remote.*;

import org.openqa.selenium.support.ui.ExpectedCondition;

import org.openqa.selenium.support.ui.WebDriverWait;

import static org.testng.Assert.*;

import org.testng.annotations.*;

import java.io.*;

import java.net.*;

 

public class BaseWebDriver {

protected WebDriver driver = null;

private StringBuffer verificationErrors = new StringBuffer();

 

@Parameters({ "platform", "browser", "version", "url" })

@BeforeTest(alwaysRun = true)

public void setup(String platform, String browser, String version,

String url) throws MalformedURLException, IOException {

DesiredCapabilities caps = null;

 

// Browsers

if (browser.equalsIgnoreCase("Internet Explorer")) {

System.setProperty("webdriver.ie.driver",

"c:\\test\\IEDriverServer.exe");

caps = DesiredCapabilities.internetExplorer();

// IE安全设置

caps.setCapability(

InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS,

true);

// browser zoom level must be set to 100%

} else if (browser.equalsIgnoreCase("Firefox")) {

System.setProperty("webdriver.firefox.bin",

"C:\\test\\Firefox4\\firefox.exe");

caps = DesiredCapabilities.firefox();

} else if (browser.equalsIgnoreCase("chrome")) {

System.setProperty("webdriver.chrome.driver",

"c:\\test\\chromedriver.exe");

caps = DesiredCapabilities.chrome();

caps.setCapability(

"chrome.binary",

"C:\\test\\Chrome31\\chrome.exe");

 

} else if (browser.equalsIgnoreCase("iPad"))

caps = DesiredCapabilities.ipad();

else if (browser.equalsIgnoreCase("Android"))

caps = DesiredCapabilities.android();

 

 

// Platforms

if (platform.equalsIgnoreCase("Windows"))

caps.setPlatform(org.openqa.selenium.Platform.WINDOWS);

else if (platform.equalsIgnoreCase("MAC"))

caps.setPlatform(org.openqa.selenium.Platform.MAC);

else if (platform.equalsIgnoreCase("Andorid"))

caps.setPlatform(org.openqa.selenium.Platform.ANDROID);

 

// Version

caps.setVersion(version);

 

driver = new RemoteWebDriver(new URL(

 

"http://localhost:4444/wd/hub"), caps);

 

driver.get(url);

//

WebDriverWait wait = new WebDriverWait(driver, 10);

 

wait.until(new ExpectedCondition<WebElement>() {

 

@Override

 

public WebElement apply(WebDriver d) {

 

return d.findElement(By.id("login"));

 

}

 

});

 

}

 

 

/* @Test(description = "TestDemo")

public void testDemo() throws InterruptedException {

// Sleep until the div we want is visible or 5 seconds is over

long end = System.currentTimeMillis() + 5000;

while (System.currentTimeMillis() < end) {

WebElement resultsDiv = driver.findElement(By.id("container"));

// If results have been returned, the results are displayed in a

// drop down.

if (resultsDiv.isDisplayed()) {

break;

}

}

}*/

 

 

@AfterTest

public void afterTest() {

// Close the browser

driver.quit();

//driver.close();

 

String verificationErrorString = verificationErrors.toString();

if (!"".equals(verificationErrorString)) {

fail(verificationErrorString);

}

}

 

}

Grid下的不同浏览器运行脚本

总控运行

rem  http://localhost:4444/grid/console 可以查看hub总控的信息

 

java -jar selenium-server-standalone-2.35.0.jar -role hub -port 4444 -nodeTimeout 600

 

各种浏览器运行的脚本

参数设置相同的部分[IP RC/WD运行模式]

@echo off

set a=0

for %%a in (%*) do set /a a+=1

echo "%a% argc"

 

Rem 可变的设置

set PORT=8902 

if %a%==1 (

if "%1%"=="" (

 set IP="localhost"

) else (

 set IP=%1%

)

set MODE="webdriver"

) else (

if "%1%"=="" (

 set IP="localhost"

) else (

 set IP=%1%

)

 

 

if "%2%"=="rc" (

 set MODE="node"

 set PORT=9902

) else (

 set MODE="webdriver"

)

)

 

echo %IP% %MODE%

 

不同浏览器的运行参数

java -Dwebdriver.chrome.driver="c:\test\chromedriver.exe" -jar selenium-server-standalone-2.35.0.jar -role %MODE% -hubHost %IP% -port %PORT% -timeout 20000 -browser "browserName=chrome,version=31,maxInstances=2,platform=WINDOWS,chrome.binary=C:\test\Chrome31\chrome.exe"

 

rem java -jar selenium-server-standalone-2.35.0.jar -h 可以查看帮助参数

rem !!! -browser参数中,逗号之间不要有空格

java -jar selenium-server-standalone-2.35.0.jar -role %MODE% -hubHost %IP% -port %PORT% -timeout 20000 -browser "browserName=firefox,version=4,maxInstances=1,platform=WINDOWS,firefox_binary=C:\test\Firefox4\firefox.exe"

 

 

java -Dwebdriver.ie.driver="c:\test\IEDriverServer.exe" -jar selenium-server-standalone-2.35.0.jar -role %MODE% -hubHost %IP% -port %PORT% -timeout 20000 -browser "browserName=internet explorer,version=8,maxInstances=1,platform=WINDOWS"

 

参考

v 零成本实现Web自动化测试-基于Selenium和Bromine 4407693.2230619944

v Selenium测试实践-基于电子商务平台 关春银等 

v Selenium Testing Tools Cookbook

Over 90 recipes to build, maintain, and improve test automation with Selenium WebDriver Unmesh Gundecha

 

v webdriver文档

v Selenium私房菜(新手入门教程)

 

http://seleniumhq.org/

http://www.compendiumdev.co.uk/selenium 

http://tech.it168.com/a2013/0906/1530/000001530755_all.shtml

https://code.google.com/p/selenium/downloads/list

 

 

v Selenium IDE + YSlow +Showslow 实现页面性能评估自动化,如果需要评估页面的性能,http://www.webpagetest.org/ 参考这个webpagetest工具更完善,可以本地安装,开源软件

时间: 2024-10-14 18:09:53

Web自动化测试 Selenium 1/3的相关文章

Web自动化测试 Selenium 3/3 https的配置

Https的信任问题处理 具体步骤如下(以demo为例) 1) ./ca.sh : 使用默认的服务器192.168.1.1的证书    ./ca.sh IP : 使用IP设置的证书 2) 以上运行后把 gen/demo.cer 导入到浏览器的客户端中,Windows下导入的步骤:    IE/Chrome: 双击demo.cer,导入到"受信任的根证书颁发机构"下    FireFox:工具/选项/高级 下点击"查看证书",在"证书机构"选项卡中

Web自动化测试 Selenium 2/3

TesNG和Selenium集成使用 TestNG 是一个设计用来简化广泛的测试需求的测试框架,从单元测试(隔 离测试一个类)到集成测试(测试由有多个类多个包甚至多个外部框架组成的整 个系统,例如运用服务器). TestNG 是一个设计用来简化广泛的测试需求的测试框架,从单元测试到 集成测试 这个是TestNG 设计的出发点,不仅仅是单元测试,而且可以用于集成测试.   运行批处理文件 @echo off   rem test.bat src\testng.xml https:\/\/192.1

基于Sahi和Twist搭建的Web自动化测试框架

Twist是一个基于Eclipse开发的自动化测试平台,它是ThoughtWorks公司的一款商业软件.Sahi是一个Web自动化工具,有Tyto公司创建,具有免费版和专业版两个版本.作者将在本文中简单介绍一下这两个工具,以及基于它们搭建的轻量级Web自动化测试框架,最后重点跟读者分享一些个人使用的经验和技巧. 在介绍Sahi之前,首先简单描述一下作者参与的项目.这个项目是为一家公司做商业应用的实施.由于时间紧迫,测试人员较少,大部分时间都是在针对主要功能做手工测试.为了减少一些重复的手工劳动,

Lemon-probe 1.4.0 - WEB自动化测试工具

应用场景 软件首页: https://www.lemonce.net 如果您希望项目发布的时候能够再期待的环境中表现一致,如果您希望在项目版本迭代时确保新旧功能都能正确工作,如果您希望项目的BUG出现一次后确保不再重复出现,如果您要测移动端,如果您想测微信项目,如果您想测H5应用,如果您需要图形界面,如果您讨厌配置复杂测试环境,如果您想告别Selenium复杂的测试环境... 那就使用Lemonce这款简单有效的测试工具! Lemonce目前支持的浏览器包括:IE9-IE11(需要调整Inter

基于业务的Web自动化测试工具—Sahi

谈及开源Web 自动化测试工具,相信很多人立刻会想到Selenium.本文给大家介绍的是另一款开源Web 自动化测试工具Sahi.Sahi的网站上有关于与Selenium的对比,不过这不是我们今天探讨的主题.这篇文章的主要目的是向读者简单的介绍一下Sahi并分享一下个人使用Sahi测试Dojo应用的经验,希望对大家能有所帮助. 1. Web2.0应用测试的困境 在开始介绍Sahi之前,我们一起来看看在开发Web 自动化测试(特指Web 2.0应用)时常面临的两大技术问题. 页面元素的识别 根据个

使用.net开发Web自动化测试工具

前段时间,由于测试需要,使用C#结合WatiN组件,开发了一个小小的web自动化测试 工具. WatiN 是一个非常简单灵活的测试框架,可以模拟用户在客户端浏览器中的大部份操 作,API也比较简单. 一.实现url调用和web控件的控制很简单,参考下面代码: 请 for (int i = 0; i < txtUrls.Length; i++) { try { WatiN.Core.DialogHandlers.AlertDialogHandler dh = new WatiN.Core.Dial

Windows环境搭建Web自动化测试框架Watir(基于Ruby)

web自动化测试一直是一个比较迫切的问题 图1-1 需要安装的工具 http://railsinstaller.org/ 因为安装Ruby还需要用到其他的一些开发工具集,所以建议从网站http://railsinstaller.org/ 下载,而且使用该安装包的话,它会帮你把环境变量也设置完毕,我使用的版本是:railsinstaller-2.2.4.exe,建议下载最新版本. 开始安装RailsInstaller工具包,安装到默认位置即可. 这个对勾建议打上,它会帮你配置git和ssh,安装过

Web自动化测试中针对图片验证码问题的常见解决思路

图片验证码(Captcha)问题在自动化测试中是一个很常见的问题,也是一个很棘手的问题.图片验证码设计的初衷其实就是为了防自动化,防止一些人利用自动工具恶意攻击网站,而很不幸的是,我们所使用的一些自动化测试工具也包含在内.当然了,对付验证码也不是一点办法都没有,方法还是有很多的,只是我们需要跳出技术层面去思考问题.废话少说,先来看下几种常见的解决办法: 1.识别法(技术) 识别法就是对验证码的图片进行字符识别,其原理就是通过识别算法解析图片,其解析的精准度取决于图片的复杂程度. 熟悉QTP的同学

Web自动化测试原理

目前有很多Web UI自动化测试框架,如WatiN,Selinimu,WebDriver等,这些框架都可以操作Web中的控件,模拟用户输入,点击等操作,实现Web自动化测试.其实这些工具的原理都一样,都是通过调用IE COM接口和HTMLDOM 对IE浏览器以及WEB测试对象的操作. 本文介绍脱离这些自动化测试框架,通过AutoIT直接使用IE COM接口结合HTML DOM对IE浏览器以及WEB对象进行自动化测试的方法. 1.IE常用操作 首先新建一个IE COM对象,配置IE窗口属性,模拟用