分类归档 » Selenium

Selenium工具介绍

4   基于WebDriver的web自动化 GAT框架的功能分为2个部分,一部分就是文档之前的章节一直在说明的的接口自动化用例的开发。另外一部分就是之前有提到过的基于WebDriver的Web UI自动化用例开发。从本节开始我将会来说明怎么用GAT来开发Web UI自动化用例。 4.1  Web UI用例的开发架构      WebUI用例的开发结构和接口自动化用例的开发架构基本一致。   l  与接口用例的共同点:如果大家还记得我们接口用例的开架构的话,可以看出我们的接口用例的所有代码,数据文件都是放在InterfaceAutomation这个文件夹下的。而我们的Web自动化的所有代码,数据文件是放在UIAutomation这个文件夹下的。同时,接口用例和UI自动化用例共同使用Libs文件夹作为第三方公共jar包的存放位置。请注意Libs这个文件夹是公用的,所以需要保持这样的目录结构不变。另外UI用例的开发目录中的文件夹的作用基本和接口用例开发目录中的文件夹作用是一致的。通过文件夹名称相信大家能够明白。当然目录的名字都是可以变化的,具体怎么来设置我会在以后的文章中统一作出说明。   l  与接口用例的不同点:UI自动化用例开发目录下的在DataFiles文件夹中只有Xmls这一个文件夹,接口用例的开发目录中除了Xmls这个文件夹之外,还有Excels这个文件夹。大家看到这不要以为是漏掉了Excel文件夹,是我们的UI自动化用例开发架构中确实没有也不需要有Excel文件夹。 4.2 开始写第一个Web UI自动化用例   1  数据文件       在写之前先来看看Web UI自动化用到的几个数据文件。 l   Paramters.xml,此文件和我们写接口测试用例的时候的用途是一致的,而且文件结构,属性  都是一致的,也就是说是通用。在此不多说。 l   TestCase.xml 此文件也和接口用例中用到的文件一致,文件结构属性都通用,只不过多出来了一个属性请看下图。 l     如上图红框中所示,Web UI 自动化中用的.TestCase.xml文件与接口中TestCase.xml文件唯一的不同是多了<UIElementsFilePaht>元素,这个元素用来表示这个文件中用到的页面元素存放的位置。大家应该知道WebUI自动化由于需要操作页面元素,因此需要再多一个文件来存放这些页面元素属性。这就是关于WebUI自动化中用到的TestCase.xml文件。和接口自动化一样,WebUI的自动化的TestCase.xml文件也必须以TestCase.xml结尾,否则不能够通过GatRunner生成单元测试用例。 l   UIElements.xml:这个文件时WebUI自动化专有的文件。下面我将通过一个示例文件来一一说明这个文件的结构,以及属性。 下面我一步一步来给大家介绍文件的结构以及属性 ²  <AllUIElements>:此元素每一个UIElements.xml文件仅有一个,是所有元素的Root元素。 ²  <UIElement>: 此元素每一个文件可有多个,此元素用来存放要操作的页面元素的识别信息。一个<UIElement>元素仅代表一个要操作的页面元素信息。下面继续介绍此元素的属性。 ü   NodeID:用来表示此元素在文件中的位置,仅仅用来在UIElements.xml文件中查找<UIElement>这个元素使用,并不表示页面元素在网页中的ID. ü   ControlType:要操作的这个元素的类型,这个可能比较不太容易理解。在GAT框架里对最基本的页面元素都做了分类,有TextBox,CheckBox,Button等等。每一种类型都对应了一个类。这个ControlType的值也就是一个类名称。这个值可以是我们框架里定义的最基本的类型,也可以是你自己定义的一个类。最基本类型的值可以自行查看API文档中com.gateside.autotesting.Gat.uia.webautomation.webcontrols 这个 package中的类。所有基本类型都在这个类中。 ü   WindowType:这个属性表示要操作的元素是在主窗口还是子窗口上,因为有可能在自动化过程中打开新的窗口,新打开的窗口称为子窗口。 可用值:MainBrowser,ChildBrowser. 不过在实际使用过程中这个属性很少用,我们提供了其他更好的方法做到这一点,因此建议这  个属性就默认保持“MainBrowser”代表主窗口即可。如果此属性选择了ChildBrowser,需要配合WindowName属性使用。 ü   WindowName:当WindowType选择了ChildBrowser的时候需要填写此属性。此属性代表了浏览器窗口的Title或者ID。 ü   FrameType:表示要操作的元素是否是在Frame或者IFrame中。 可用值:DefaultPage,FramePage. 如果要操作的元素不再任何frame中使用DefaultPage即可。如果元素在frame中使用FramePage。如果此属性使用了FramePage,就必须配合后面的IFrameName,IFrameIndex使用。 ü   IFrameName: 是值IFrame的id,name等属性,在此只需要填写能唯一确定iframe的值即可或者name或者ID.如果要操作的元素在嵌套的iframe中。只需要在此按照iframe嵌套的顺序添加iframe的id或者name,用逗号分隔iframe唯一标示信息即可。在此填写了iframe信息,在操作元素过程中就完全不需要再操心元素在哪个iframe中了。 ü   IFrameIndex:有时候有些iframe没有id,name等属性只能通过index来获取iframe. ü   ID:页面元素的ID ü   Name:页面元素Name ü   Xpath:页面元素的xpath ü   CssSelector:Css样式选择器,可以使用Selenium IDE获得 ü   InnerText:Text属性 ü   LinkText:仅仅针对<a></a>超链接元素 ü   TagName:通过TagName获取元素,返回第一个值 ü   ClassName:通过ClassName定位元素,返回第一个值 ü   PropertyName,PropertyValue:其他元素属性 需要说明的是,以上用于定位元素的属性,仅填写一个能够定位元素的值即可,其余均可留空,不需要都写。   2 代码文件   1)         用例代码:用例代码的表现形式是基于Testng的单元测试代码,一个TestMethod代表了一个用例。当然了这个用例代码是不需要你自己去写的,和接口用例一样,我们可以通过GatRunner根据TestCase.xml生成。后面我们再介绍使用GatCreator生成WebUI自动化用例时应该注意的点。StepMethod代码:使用过GAT的人都知道,我们自己写的代码都是以StepMethod的形式存在的。WebUI 的StepMethod的代码写法与接口的StepMethod的写法一致,概念,使用方式都是一致的。还记得我在前面的文档里写过,如果你会写多接口组合的用例那么你就会写一般的WebUI自动化用例了,说的就是无论概念还是代码的写法都是一致的。StepMethod代码存放在WUATStepGroup工程下。命名规则,什么的请参考接口的要求即可。

并行(多线程)技术在软件术语里被定义为软件、操作系统或者程序可以并行地执行另外一段程序中多个部分或者子组件的能力。TestNG允许我们以并行(多线程)的方式来执行测试。这就意味着基于TestNG测试组件的配置,多个线程可以被同时启动然后分别执行各自的测试方法。相对于传统的单线程执行测试的方式,这种多线程方式拥有很大的优势,主要是它可以减少测试运行时间,并且可以验证某段代码在多线程环境中运行的正确性。 目录 并行执行测试的优势 如何并行地执行测试方法 如何并行地执行测试类 如何并行地执行同一测试套件内的各个测试组件 如何配置需要在多线程环境中执行的测试方法 并行执行测试的优势 并行(多线程)执行测试可以给用户带来很多好处,主要包括以下两点: 1)减少了执行时间:并行测试也就意味着多个测试可以在同一时间被同时执行,从而减少了整体测试所花费的时间。 2)允许多个线程并行地测试同一个测试组件:有了这个特性,我们就能够写出相应的测试用例来验证应用程序中包含多线程部分的代码的正确性。 以上特性被广泛地应用在QA领域的自动化功能测试方面。通过简单的配置,QA人员就可以很轻松地使得他们的测试用例在多个浏览器或者操作系统中并行地执行。 TestNG提供了三种不同类型的配置方案来实现并行测试。 如何并行地执行测试方法 TestNG为我们提供了多种方式来实现并行测试,其中一种就是每一个独立的线程分别执行各自的测试方法。这种方式能够显著地减少测试执行时间,这是因为当有越多的测试方法被并行执行时,总体测试消耗时间将会越少。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 package com.howtodoinjava.parallelism; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; public class ParallelMethodTest {     @BeforeMethod     public void beforeMethod() {         long id = Thread.currentThread().getId();         System.out.println(“Before test-method. Thread id is: ” + id);     }     @Test     public void testMethodsOne() {         long id = Thread.currentThread().getId();         System.out.println(“Simple test-method One. Thread id is: ” + id);     }     @Test     public void testMethodsTwo() {         long id = Thread.currentThread().getId();         System.out.println(“Simple test-method Two. Thread id is: ” + id);     }     @AfterMethod     public void afterMethod() { …..

PyGAT GAT python版本 1 PyGAT的整体设计思想与java版基本一致,可以参考java版文档 2 使用流程也基本与java版本一致。python版本使用默认的配置文件即可,不用修改。 3 Python版本做接口测试,不提供excel功能,仅支持xml形式 4 Python版本中发送请求请使用httplib或者其他第三方库。(httplib已经足够简单,框架不再重复封装) 5 开发目录请保持固定。 6 Python版本仅提供接口自动化功能,WebUI自动化功能暂不支持,但以保留后续开发的接口。 7 有问题请参见www.gateside.cn或者加群 51302519 8 github下载地址:https://github.com/skyzhang2006/PyGAT.git

GAT源码获取地址:https://github.com/TeamcatCorp/GAT-CODE.git  有问题可以加群,讨论。51302519

   基于WebDriver的web自动化 GAT框架的功能分为2个部分,一部分就是文档之前的章节一直在说明的的接口自动化用例的开发。另外一部分就是之前有提到过的基于WebDriver的Web UI自动化用例开发。从本节开始我将会来说明怎么用GAT来开发Web UI自动化用例。 4.1  Web UI用例的开发架构      WebUI用例的开发结构和接口自动化用例的开发架构基本一致。具体接口请看下图。 l  与接口用例的共同点:如果大家还记得我们接口用例的开架构的话,可以看出我们的接口用例的所有代码,数据文件都是放在InterfaceAutomation这个文件夹下的。而我们的Web自动化的所有代码,数据文件是放在UIAutomation这个文件夹下的。同时,接口用例和UI自动化用例共同使用Libs文件夹作为第三方公共jar包的存放位置。请注意Libs这个文件夹是公用的,所以需要保持这样的目录结构不变。另外UI用例的开发目录中的文件夹的作用基本和接口用例开发目录中的文件夹作用是一致的。通过文件夹名称相信大家能够明白。当然目录的名字都是可以变化的,具体怎么来设置我会在以后的文章中统一作出说明。   l  与接口用例的不同点:UI自动化用例开发目录下的在DataFiles文件夹中只有Xmls这一个文件夹,接口用例的开发目录中除了Xmls这个文件夹之外,还有Excels这个文件夹。大家看到这不要以为是漏掉了Excel文件夹,是我们的UI自动化用例开发架构中确实没有也不需要有Excel文件夹。 4.2 开始写第一个Web UI自动化用例   1  数据文件       在写之前先来看看Web UI自动化用到的几个数据文件。 l   Paramters.xml,此文件和我们写接口测试用例的时候的用途是一致的,而且文件结构,属性  都是一致的,也就是说是通用。在此不多说。 l   TestCase.xml 此文件也和接口用例中用到的文件一致,文件结构属性都通用,只不过多出来了一个属性请看下图。 l     如上图红框中所示,Web UI 自动化中用的.TestCase.xml文件与接口中TestCase.xml文件唯一的不同是多了<UIElementsFilePaht>元素,这个元素用来表示这个文件中用到的页面元素存放的位置。大家应该知道WebUI自动化由于需要操作页面元素,因此需要再多一个文件来存放这些页面元素属性。这就是关于WebUI自动化中用到的TestCase.xml文件。和接口自动化一样,WebUI的自动化的TestCase.xml文件也必须以TestCase.xml结尾,否则不能够通过GatRunner生成单元测试用例。 l   UIElements.xml:这个文件时WebUI自动化专有的文件。下面我将通过一个示例文件来一一说明这个文件的结构,以及属性。 下面我一步一步来给大家介绍文件的结构以及属性 ²  <AllUIElements>:此元素每一个UIElements.xml文件仅有一个,是所有元素的Root元素。 ²  <UIElement>: 此元素每一个文件可有多个,此元素用来存放要操作的页面元素的识别信息。一个<UIElement>元素仅代表一个要操作的页面元素信息。下面继续介绍此元素的属性。 ü   NodeID:用来表示此元素在文件中的位置,仅仅用来在UIElements.xml文件中查找<UIElement>这个元素使用,并不表示页面元素在网页中的ID. ü   ControlType:要操作的这个元素的类型,这个可能比较不太容易理解。在GAT框架里对最基本的页面元素都做了分类,有TextBox,CheckBox,Button等等。每一种类型都对应了一个类。这个ControlType的值也就是一个类名称。这个值可以是我们框架里定义的最基本的类型,也可以是你自己定义的一个类。最基本类型的值可以自行查看API文档中com.gateside.autotesting.Gat.uia.webautomation.webcontrols 这个 package中的类。所有基本类型都在这个类中。 ü   WindowType:这个属性表示要操作的元素是在主窗口还是子窗口上,因为有可能在自动化过程中打开新的窗口,新打开的窗口称为子窗口。 可用值:MainBrowser,ChildBrowser. 不过在实际使用过程中这个属性很少用,我们提供了其他更好的方法做到这一点,因此建议这  个属性就默认保持“MainBrowser”代表主窗口即可。如果此属性选择了ChildBrowser,需要配合WindowName属性使用。 ü   WindowName:当WindowType选择了ChildBrowser的时候需要填写此属性。此属性代表了浏览器窗口的Title或者ID。 ü   FrameType:表示要操作的元素是否是在Frame或者IFrame中。 可用值:DefaultPage,FramePage. 如果要操作的元素不再任何frame中使用DefaultPage即可。如果元素在frame中使用FramePage。如果此属性使用了FramePage,就必须配合后面的IFrameName,IFrameIndex使用。 ü   IFrameName: 是值IFrame的id,name等属性,在此只需要填写能唯一确定iframe的值即可或者name或者ID.如果要操作的元素在嵌套的iframe中。只需要在此按照iframe嵌套的顺序添加iframe的id或者name,用逗号分隔iframe唯一标示信息即可。在此填写了iframe信息,在操作元素过程中就完全不需要再操心元素在哪个iframe中了。 ü   IFrameIndex:有时候有些iframe没有id,name等属性只能通过index来获取iframe. ü   ID:页面元素的ID ü   Name:页面元素Name ü   Xpath:页面元素的xpath ü   CssSelector:Css样式选择器,可以使用Selenium IDE获得 ü   InnerText:Text属性 ü   LinkText:仅仅针对<a></a>超链接元素 ü   TagName:通过TagName获取元素,返回第一个值 ü   ClassName:通过ClassName定位元素,返回第一个值 ü   PropertyName,PropertyValue:其他元素属性 需要说明的是,以上用于定位元素的属性,仅填写一个能够定位元素的值即可,其余均可留空,不需要都写。   2 代码文件   1)         用例代码:用例代码的表现形式是基于Testng的单元测试代码,一个TestMethod代表了一个用例。当然了这个用例代码是不需要你自己去写的,和接口用例一样,我们可以通过GatRunner根据TestCase.xml生成。后面我们再介绍使用GatRunner生成WebUI自动化用例时应该注意的点。WebUI生成的测试用例工程名字是WUATTestProject。所有的测试用例代码都在这个Project中。 2)         StepMethod代码:使用过GAT的人都知道,我们自己写的代码都是以StepMethod的形式存在的。WebUI 的StepMethod的代码写法与接口的StepMethod的写法一致,概念,使用方式都是一致的。还记得我在前面的文档里写过,如果你会写多接口组合的用例那么你就会写一般的WebUI自动化用例了,说的就是无论概念还是代码的写法都是一致的。StepMethod代码存放在WUATStepGroup工程下。命名规则,什么的请参考接口的要求即可。唯一不同的就是StepMethod方法的参数类型,以及个数不同。具体请看下面一小节 3)      Step代码示例: 下面代码是用来打开百度首页,并输入搜索关键字,然后点击搜索的一个操作模块。我来一句一句的解释一下每一个句话的含义及功能。   publicclass GameHomePageSteps { @WUATStepMethodDesc publicvoid search(WebBrowser browser,WebPage webPage,String parameterID) throws Exception { WebUIStepParameter parameter=(WebUIStepParameter)ParameterHelper.getWebUIStepParameter(parameterID); browser.navigateTo(“http://www.baidu.com”,180); webPage.getWebControll(“Test01”).action(“inputText”).exec(parameter.getValue(“searchkeyword”)); if(parameter.parameters.contains(“click”)) { webPage.getWebControll(“Test02”).action(“click”).exec(); } }   } …..

1、下载并安装python(http://www.python.org/geti/)。 2、安装selenium(http://pypi.python.org/pypi/selenium)下载并解压缩selenium-2.32.0.tar.gz. 把selenium-2.32.0\py\下的selenium整个文件夹放入Python33\Lib\site-packages目录下。 3   下载Eclipse后安装pydev插件 4   打开eclipse创建pydev project,并添加一个Pydev Module 输入一下代码 # coding=gbk from selenium import webdriver from selenium.webdriver.common import by if __name__ == ‘__main__’: firefoxDriver=webdriver.Firefox() firefoxDriver.get(“http://www.baidu.com”) ele=firefoxDriver.find_element(by.By.ID,”kw”) ele.send_keys(“hello”) 5要想支持IE,Chrome,下载IEDriverServer,ChromeDriverServer.exe,将exe程序放在你所新建的Project的根目录下。。 6、如果是在Win7上运行IE8以上版本的浏览器,运行过程中可能会出现WebDriverException: Message: u’Unexpected error launching Internet Explorer. Protected Mode settings are not the same for all zones. Enable Protected Mode must be set to the same value (enabled or disabled) for all zones.’ 这个错误,更改IE的internet选项->安全,将Internet/本地Internet/受信任的站定/受限制的站点中的启用保护模式全部去掉勾,或者全部勾上。下面是一个IE的例子,打开百度,自动搜索selenium。 from selenium import webdriver from selenium.webdriver.common.keys import Keys driver = webdriver.Ie() driver.get(“http://www.baidu.com”) elem = driver.find_element_by_name(“wd”) elem.send_keys(“selenium”) elem.send_keys(Keys.RETURN) 完成上述步骤,你已经写了第一个基于python的selenium 脚本了 下面是我写的一个完整的例子,供大家参考: # coding=utf-8 ”’ Created on 2013/12/31   @author: zhangtiande ”’ import sys import time import os from selenium.webdriver.common.keys import Keys from selenium import webdriver def opensite(browserType): browser=getBrowser(browserType) browser.get(“http://www.baidu.com”); browser.maximize_window() return browser def getBrowser(browserType): if browserType==”IE”: command = ‘tskill iexplore’ os.system(command) command = ‘tskill IEDriverServer’ os.system(command) browser=webdriver.Ie() if browserType==”CHROME”: command = ‘tskill chromedriver’ os.system(command) command = ‘tskill chrome’ os.system(command) browser=webdriver.Chrome() if browserType==”FIREFOX”: browser=webdriver.Firefox() return browser def closesite(browser): browser.close() def beforestart(): ”’ clean env ”’ command = ‘tskill taskeng’ #杀进程 os.system(command)   if __name__ == ‘__main__’: browser=None try: beforestart() browser=opensite(sys.argv[1]) self.browser.find_element_by_name(“username”).send_keys(“test100”) self.browser.find_element_by_name(“password”).send_keys(“123”) self.browser.find_element_by_name(“password”).send_keys(Keys.ENTER) browser.close() browser.quit() except Exception,e: closesite(browser) browser.quit()  

  1   文档目的 编写此文档的目的在于帮助更多想学习Selenium webdriver的同好们,最近发现好多人想学习Selenium做自动化,又不知道怎么入门,因此写下这篇入门的文档供各位使用,希望大家能更快的领会到Selenium webdriver 的强大之处。本文只对Selenium webdriver入门作介绍,Selenium rc由于本人认为已经过时,不做介绍。另外本文只是一个简单的例子,想要深入学习的话,并不合适。 Java开发自己的第一个Webdriver脚本。   1)         前期准备 l   在官网的下载页面找到java版本的weddriver下载下来(Selenium Client & WebDriver Language Bindings) l   对于IE/Chrome浏览器你还需要下载IEDriverServer.exe,ChromeDriverServer.exe l   下载上述包文件后,解压缩。(请确保你的selenium版本能够支持你目前浏览器的版本) 2)  创建Java项目并添加Selenium相关jar包的引用,一下是我GAT框架里的一部分,做了少许修改。要只是运行一下代码 请将IEDriverServer.exe,ChromeDriverServer.exe放到你新建项目的根目录下。   public class Demo { public void main(String[] args) { DriverService service=getDriverService(browserType); WebDriver webDriver=null; switch (browserType.ordinal()) { case 1: { webDriver = new FirefoxDriver(); break; } case 0: webDriver =new InternetExplorerDriver((InternetExplorerDriverService)service); break; case 2: webDriver =new ChromeDriver((ChromeDriverService)service); break; } webDriver.get(“http://www.163.com”); webDriver.findElement(By.id(“kw”)).sendKeys(“selenium”); webDriver.findElement(By.id(“kw”)).sendKeys(“selenium”); } private DriverService getDriverService(BrowserType browserType) { DriverService service=null; switch (browserType.ordinal()) { case 0: { System.setProperty(“webdriver.ie.driver”,”IEDriverServer.exe”); service=InternetExplorerDriverService.createDefaultService(); break; } case 2: { System.setProperty(“webdriver.chrome.driver”,”chromedriver.exe”); service=ChromeDriverService.createDefaultService(); break; } } return service; } public enum BrowserType { IE, FireFox, Chrome } }  

  1     Web页面 对于很多做Selenium Web自动化的人来说,有时候会问到一个问题,就是我的网站是用java,Php等语言开发的。那我在做web自动化的时候要怎么处理不同开发语言做的网站呢。对于这个问题大家可以忽略,因为任何一种网站开发语言或者开发框架制作的网站在浏览器里显示的时候都是符合HTML标准的,也就是说同一个网站无论用什么语言来开发,在浏览器里来看的时候都是由一堆的html代码构成,所以说网页的展现是一种开发语言,开发架构无关的。 2     Web自动化原理 UI界面的自动化包括很多类型,包括Web自动化,Windows Application自动化,移动端自动化等等。但UI自动化的原理却是一致的。原理:通过抓取测试对象的控件,模拟操作来达到自动化的目的。后面会着重的讨论怎么样去抓取Web页面对象,至于其他几种UI自动化控件的获取不是本文的重点,不做过多介绍。 3     Dom Tree 文件对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展标志语言的标准编程接口。为什么我们可以获取到页面元素,并模拟操作就是因为DOM。 它定义了定义了所有 HTML 元素的对象和属性,以及访问它们的方法。之所以说这部门就是想让大家知道为什么我们可以用ID,Name等属性来获取元素,并能对获取到的元素做操作。 4       Selenium介绍 1)         Selenium RC: 2004年ThoughtWorks公司开发的web自动化测试工具。SeleniumRC也即现在所说的Selenium1.0.他的工作原理是基于浏览器的JavaScript注入,因此可以支持市面上所有可以支持javascript的浏览器做自动化。但是因为他的实现机制导致了很大的局限性,最明显的是不能支持在两个浏览器窗口间切换,只能在一个浏览器做操作。对于1.0的介绍就到这,我的观点是不推荐大家使用seleniumrc做自动化,因此不做过多介绍。 2)         Selenium WebDriver:这个版本也称之为Selenium2.0版,是把slenium rc和webdriver做了合并。WebDriver是由google内部工程师开发出来的,后来开源。他的工作原理如下图所示: 上图中没有提到FirefoxServer,是因为Firefox的server端是作为firefox的插件内置到浏览器中的,这也是为什么firefox浏览器在启动的时候比较慢的原因。Clinent端和服务器端的通信是通过http接口来完成的,我们写的任何一句Seleniu的代码都会被翻译成一个http请求发送给服务端,服务单解析然后来对浏览器做操作,然后将操作结果返回给客户端也就是我们的代码。 3)         Selenium Web Driver支持的语言比较多C#,java,python ,ruby等,支持多种语言得益于它的工作原理。顺便提一句目前业界各种自动化如果支持很多种语言的话,基本都是使用了webdriver的实现原理。 5     Selenium辅助工具 Selenium IDE Developer toolbar(IE),Firebug   这里只写了两类,SeleniumIDE是SeleniumRc提供的一个录制工作,这里介绍给大家是想让大家用它来获取页面元素的,并不是让大家录制的。像Firebug类的工作目前新一些的浏览器都提供,只要按下F12就可以了。既然可用Firebug类的工具为什么要介绍SeleniumIDE呢,因为它在获取页面元素的时候,可以给你提供多种定位元素的方式,你可以自由的选择。   6     用到的其他技能 1)         Winform类自动化工具:对于模态窗口(例如浏览器弹出的确认窗口,上传下载文件的窗口等)需要使用winform自动化工具。可以使用autoit,.net自带的自动化类等处理。 2)         对于页面flash的处理可以用sikuli来处理,它是一个图片对比工具。 3)         Javascript,有时候我们需要javascript来帮助我们处理页面元素。 4)         了解浏览器渲染页面的方式,会对你调试自动化代码有很大帮助。了解了渲染方式你就可以知道页面元素是怎么样加载的。   7     最基本的Web自动化运行方式 做web自动化的时候会遇到一个问题就是我的用例怎么能够批量的自动化的执行。 如果你用例数量不大或者资源不足的情况下,可以选择使用jenkins+testing+webdriver 的方式来搭建你的运行框架。如果你用的语言不是java,可以把testng替换为你使用的语言自己的单元测试框架即可。