selenium入门教程c#
一、 简述
1. 介绍
Selenium是ThoughtWorks专门为Web应用程序编写的一个验收测试工具。
Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE、 Mozilla Firefox、Google Chrome等。这个工具的主要功能包括:测试与浏览器的兼容性,测试系统功能。支持自动录制动作和自动生成Net、Java、Perl等不同语言的测试脚本。
2. 优势
1. 更加逼真的模拟用户操作网页
2. 跨平台(Windows,Linux,mac,android,IOS) ,
3. 跨浏览器(Firefox,IE,Chrome, Opera,Safari)
4. 多语言支持(java,c#,python,ruby,php,perl,js)
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已经包含了一代所有代码,并实现了一些一代无法完成的功能,并具有面向对象,拓展性好等特点。
二、 下载
1. Selenium 下载
1)进入官网下载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后会在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中进行运行
四、 Selenium 在vs2010的编码
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;
}
}
}
}
selenium入门教程c#的更多相关文章
- Pytest自动化测试-简易入门教程(02)
Pytest框架简介 Pytest是一个非常成熟的全功能的Python测试框架,主要有以下几个特点:1.简单灵活,容易上手,支持参数化2.能够支持简单的单元测试和复杂的功能测试,3.还可以用来做sel ...
- wepack+sass+vue 入门教程(三)
十一.安装sass文件转换为css需要的相关依赖包 npm install --save-dev sass-loader style-loader css-loader loader的作用是辅助web ...
- wepack+sass+vue 入门教程(二)
六.新建webpack配置文件 webpack.config.js 文件整体框架内容如下,后续会详细说明每个配置项的配置 webpack.config.js直接放在项目demo目录下 module.e ...
- wepack+sass+vue 入门教程(一)
一.安装node.js node.js是基础,必须先安装.而且最新版的node.js,已经集成了npm. 下载地址 node安装,一路按默认即可. 二.全局安装webpack npm install ...
- Content Security Policy 入门教程
阮一峰文章:Content Security Policy 入门教程
- gulp详细入门教程
本文链接:http://www.ydcss.com/archives/18 gulp详细入门教程 简介: gulp是前端开发过程中对代码进行构建的工具,是自动化项目的构建利器:她不仅能对网站资源进行优 ...
- UE4新手引导入门教程
请大家去这个地址下载:file:///D:/UE4%20Doc/虚幻4新手引导入门教程.pdf
- ABP(现代ASP.NET样板开发框架)系列之2、ABP入门教程
点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之2.ABP入门教程 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)” ...
- webpack入门教程之初识loader(二)
上一节我们学习了webpack的安装和编译,这一节我们来一起学习webpack的加载器和配置文件. 要想让网页看起来绚丽多彩,那么css就是必不可少的一份子.如果想要在应用中增加一个css文件,那么w ...
随机推荐
- 50 道 CSS 基础面试题及答案
1 介绍一下标准的CSS的盒子模型?与低版本IE的盒子模型有什么不同的? 标准盒子模型:宽度=内容的宽度(content)+ border + padding + margin 低版本IE盒子模型:宽 ...
- Diycode开源项目 ImageActivity分析
1.首先看一下效果 1.1做成了一个GIF 1.2.我用格式工厂有点问题,大小无法调到手机这样的大小,目前还没有解决方案. 1.3.网上有免费的MP4->GIF,参考一下这个网站吧. 1.4.讲 ...
- idea 占用内存优化调整
idea 占用内存优化调整 https://www.cnblogs.com/metoy/p/5967696.html https://blog.csdn.net/zdxxinlang/arti ...
- loj2090 「ZJOI2016」旅行者
分治+最短路,很套路的 #include <algorithm> #include <iostream> #include <cstring> #include & ...
- 【网易严选】iOS持续集成打包(Jenkins+fastlane+nginx)
本文来自网易云社区 作者:孙娇 严选iOS客户端的现有打包方式是通过远程连接打包机执行脚本去打包,打完包会输出相应的ipa的二维码,扫一扫二维码可以安装,但是随着测试队伍的壮大,外包同学越来越多,在打 ...
- 设计模式之第12章-享元模式(Java实现)
设计模式之第12章-享元模式(Java实现) “怎么回事,竟然出现了OutOfMemory的错误.鱼哥,来帮我看看啊.”“有跟踪错误原因么?是内存泄露么?”“不是内存泄露啊,具体原因不知道啊.对了,有 ...
- Python+Selenium练习篇之21-如何截图并保存
本文介绍如何利用Selenium的方法进行截图,在测试过程中,是有必要截图,特别是遇到错误的时候进行截图.在selenium for python中主要有三个截图方法,我们挑选其中最常用的一种. ge ...
- Python+Selenium练习篇之5-利用partial link text定位元素
本文介绍如何通过partial link text来定位页面元素.看到这个,有点和前一篇文字link text有点类似.字面意思,确实和link text相类似,partial link text就是 ...
- jquery实现跨域请求(复制)
很多开发人员在使用jquery在前端和服务器端进行数据交互,所以很容易会认为在前端利用jquery就可以读取任何站点的数据了.近日在进行开 发时,因为要和第三方公司的一个项目进行数据的共享,因为考虑多 ...
- SQL Server2012使用导入和导出向导时,用sql语句作为数据源,出现数据源类型会变成202或者203
用MS SqlServer2012进行数据导出时,使用的查询语句导出,但是出现了错误: “发现 xx个未知的列类型转换您只能保存此包“ 点击列查看详细错误信息时,可以看到: [源信息]源位置: 192 ...