自动化基础普及之selenium是什么?

Selenium 并不像QTP那样让人一下子就明白是什么?它是编程人员的最爱,但它却对测试新手产生了很大的阻碍。

  Selenium 是啥?

  Selenium RC是啥?

  Webdriver 又是啥?

  RC 和 Webdriver 是啥关系?

  Webdriver 和编程语言啥关系?

  Selenium 能并行执行脚本嘛?

  Selenium 能做移动端自动化么?

  这里虫师用简单方式,告诉你,他们错综复杂的关系。理顺了它们之间的关系才能真正使用它。

  Selenium 是什么?

  Selenium 是web自动化测试工具集,包括IDE、Grid、RC(selenium 1.0)、WebDriver(selenium 2.0)等。

  Selenium IDE 是firefox浏览器的一个插件。提供简单的脚本录制、编辑与回放功能。

  Selenium Grid 是用来对测试脚步做分布式处理。现在已经集成到selenium server 中了。

  RC和WebDriver 更多应该把它看成一套规范,在这套规范里定义客户端脚步与浏览器交互的协议。以及元素定位与操作的接口。

  WebDriver是什么?

  对于刚接触selenium自动化测试的同学来说不太容易理解API是什么,它到底和编程语言之是什么关系。

  http://www.w3.org/TR/2013/WD-webdriver-20130117/

  当初,在刚学selenium (webdriver)的时候花了一个星期来翻译这个文档,后来也没弄明白,它是啥。其实它就是一层基础的协议规范。

  假如说:Webdriver API(接口规范)说,我们要提供一个页面元素id的定位方法。

  Ruby的webdriver模块是这么实现的:


require "selenium-webdriver"   #导入ruby版的selenium(webdriver)

find_element(:id, "xx")    #id定位方法

  C#的webdriver模块是这么实现的:


using OpenQA.Selenium;

using OpenQA.Selenium.Firefox;  //导入C#版的selenium(webdriver)

FindElement(By.Id("xx"))   //id定位方法

  python的webdriver模块是这么实现的:


from  selenium import webdriver    #导入python版的selenium(webdriver)

find_element_by_id("xx")   #id定位方法

  Java的webdriver模块是这么实现的:


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页面操作的相关规范,比如元素定位方法,浏览器操作,获取web页元素属性等。

 Webdriver  如何组织和执行用例?

  对不起,webdriver 不会。

  把写好这些操作页面元素的方法(用例)组织起来执行并输入测试结果,是由编程语言的单元测试框架去完成的。如java 的junit和testng单元测试框架,python 的unittest单元测试框架等。

  Selenium RC 和WebDriver 什么关系?

  RC和 WebDriver 类似,都可以看做是一套操作web页面的规范。当然,他们的工作原理不一样。

  selenium RC 在浏览器中运行 JavaScript 应用,使用浏览器内置的 JavaScript 翻译器来翻译和执行selenese 命令(selenese 是 selenium 命令集合) 。

  WebDriver 通过原生浏览器支持或者浏览器扩展直接控制浏览器。WebDriver 针对各个浏览器而开发,取代了嵌入到被测 Web 应用中的 JavaScript。与浏览器的紧密集成支持创建更高级的测试,避免了JavaScript 安全模型导致的限制。除了来自浏览器厂商的支持,WebDriver 还利用操作系统级的调用模拟用户输入。

  看样子webdriver 更牛B一些。为了保持向兼容,所以selenium 2.0中,RC 和webdriver 并存,但说起selenium 2.0 一般指的是webdriver 。

  并行与分布式的区别

  有同学好奇如何并行的执行测试用例,并行要求“同时”执行多条用例,这个也是由编程语言的多线程技术实现的。

  你会问Selenium Grid 不是可以实现分布式执行么? 分布式的概念是写好一条用例可以调用不同的平台执行,如 A电脑上有一个测试用例,可以调用B电脑(linux)的 Firefox浏览器来跑A电脑上的测试用例;也可以调用C电脑(windows)的 Chrome浏览器来跑A电脑上的测试用例。这是分布式的概念。

  Selenium如何能做移动端测试么?

  这里我们以python 语言为例。

  from selenium import webdriver

  driver= webdriver.Chrome()   #获取浏览器驱动。拿到浏览器驱动driver 才能操作浏览器所打找的页面上的元素。

  我们把驱动展开是这样的


from selenium import webdriver

driver = webdriver.Remote(

command_executor='http://127.0.0.1:4444/wd/hub',

desired_capabilities={'platform': 'ANY',

'browserName':chrome,

'version': '',

'javascriptEnabled': True

})

  驱动里包含了一些参数,代理服务器(URL)平台,浏览器 ,浏览器版本等。

  移动端的自动化测试工具Appium

  从本质上来讲,appium同样继承了WebDriver  API的接口规范。Appium 同样是支持多种编程语言的。这里仍然以python 为例子。

  from appium import webdriver  #导入python版的 appium(webdriver)模块


#定义驱动的参数

desired_caps = {}

desired_caps['platformName'] = 'Android'

desired_caps['platformVersion'] = '4.2'

desired_caps['deviceName'] = 'Android Emulator'

desired_caps['appPackage'] = 'com.android.calculator2'

desired_caps['appActivity'] = '.Calculator'

driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)

  这一次因为我们操作的是移动端的安卓。所以我们驱动的参数里就要指定平台是'Android' ,版本是4.2 等信息。拿到驱动后,就可以操作安卓上的APP了。

最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-09-27 12:42:02

自动化基础普及之selenium是什么?的相关文章

自动化基础普及之selenium是啥?

Selenium 并不像QTP那样让人一下子就明白是什么?它是编程人员的最爱,但它却对测试新手产生了很大的阻碍.   Selenium 是啥? Selenium RC是啥? Webdriver 又是啥? RC 和 Webdriver 是啥关系? Webdriver 和编程语言啥关系? Selenium 能并行执行脚本嘛? Selenium 能做移动端自动化么?   这里虫师用简单方式,告诉你,他们错综复杂的关系.理顺了它们之间的关系才能真正使用它.     Selenium 是什么?   Sel

提高数据中心可见性的自动化基础设施管理(AIM)

如今,数据中心管理者一直致力于采用新的应用程序和网络技术,而这通常意味着部署新的光纤和设备.随着新的光纤接口部署,提高连接速度,将会增加复杂性:一些设备适用于双工光纤,而并行光纤连接更适合于其他类型的网络设备.因此,跟踪和管理大量和各种各样的光纤连接,以确保工作有效地进行,没有代价高昂贵的应用程序中断的风险,这变得越来越困难. 自动化基础设施管理(AIM)系统提供了支持快速迁移到更高速度的关键性,以及现代数据中心网络的结构特性的可视性,其中一切都与其他所有功能相结合,具有不断变化的双工连接和并行

自动化基础概念之“COM组件与接口”

在前文,我预告了我将开始介绍WINX对自动化(Automation)的支持.首先我打算解释一下自动化(Automation)相关的概念. 我们会分为3个篇幅介绍: ·COM基础:COM组件(Component)与接口(Interface) ·变体(Variant)与IDispatch(Dispatch调用) ·自动化(Automation).OA(Office Automation).二次开发接口(应用程序开发接口,API)与类型库(TypeLib) 这是第一篇. COM组件(Component

全球调研:自动化发展普及势不可挡

BMC Software委托了Forrester Consulting针对IT自动化的相关安全问题进行了一次全方位的调研,此次调研得到的新发现对全世界的CIO们发出一记预警. 越来越多的IT部门已经开始通过自动化技术进行了效率上的提高并且大大降低了人为失误.比如,随着中国商业竞争的愈演愈烈,各大企业面临着需要在缩减开支的基础上同时需要更为高效的工作效率这一压力.有51%的中国受访者们认为,对IT部门整体效率的提升将会成为IT部门在2012年度的关键任务.然而,在对全世界展开的调查结果表明,绝大多

揭秘阿里云的自动化基础架构供给和应用程序部署

作为马云阿里巴巴帝国的一份子,创立于2009年的阿里云是中国首屈一指的云计算平台.阿里云总部位于杭州,服务范围覆盖了全球200多个国家和地区,并致力于为企业,政府等机构提供安全.可靠的云计算和服务.近年来,阿里云在全球不断新增数据中心,而最新设立的数据中心正位于高科技事业云集的美国硅谷. 那么,如此庞大的云计算航母,在阿里云背后为其提供技术支持的又是谁呢? 这不得不提到DCHQ,一家总部位于美国旧金山的初创公司.DCHQ是一家业内知名的专业提供混合云以及企业级应用程序自动化解决方案的公司. 随着

简单的自动化测试过程(使用Selenium )

步骤1:安装Selenium IDE 安装Firefox浏览器-->去http://seleniumhq.org/ download/下载最新版本的Selenium IDE-->安装Selenium IDE-->重启Firefox-->点击菜单"工具" 下的Selenium IDE-->出现Selenium IDE主界面,如下图所示.(说明:Selenium是一种Web应用的自动化功能测试工具,Selenium IDE是一个Firefox插件,能够 录制-

自动化领域:选择合适的自动化工具

在业务经营中,"少即是多"一般是常见的陈词滥调,IT也不例外.这意味着通过寻找更有效的方式利用现有资源以应对不断增长的需求.这通常是通过任务自动化和简化的过程与脚本和批处理作业来实现的.虽然这些方法是有效的单一的系统或任务,它们的范围有限,因为它们一般不延伸超过一个单一的系统.而为了使IT产业能够满足企业的需求,必须将脚本化使之成熟为一种能够跨越多个系统的自动化工具. 单个任务的自动化仅是自动化旅程的第一步.今天的IT基础架构必须无缝交互,使组织能够以难以置信的速度迁移多个系统的组合.

使用Selenium实现对IBM Systems Director GUI的自动化测试

GUI 测试是测试任何产品都不可缺少的一部分.IBM Systems Director 是一个由数百个屏幕来支持不同操作的产品.IBM Systems Director 的 GUI 测试需要频繁执行且需要在各种受支持的平台上重复.因此,手动进行此测试将十分繁琐. 自动化 GUI 测试有多种工具可用.这些工具当中有很多都可以为 IBM Systems Director 自动化 GUI 测试.但由于 IBM Systems Director 产品不断发展,屏幕经常会发生变更,因此这就要求所用的工具能

使用Selenium Grid改进Web应用程序的测试

通过真实的测试项目和代码示例,学习如何在多个环境中并行地执行测试和加快 Web 应用程序的测试速度. Selenium Remote Control (RC) 是 Selenium 项目工具套件的一个部分,它是一个自动化的 Web 应用程序测试框架.Selenium RC 支持许多的编程语言和几乎所有的浏览器.Selenium RC 最重要的优势是浏览器的驱动方法.与其他 Web UI 自动化工具不同,Selenium RC 是通过 http://www.aliyun.com/zixun/agg