




已阅读5页,还剩27页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Selenium1(Selenium遥控)简介正如你可以看到Selenium项目的简史,Selenium RC的Selenium很长一段时间的主要项目,前WebDriver / Selenium合并带来的Selenium 2,最新的和更强大的工具。Selenium 1仍积极支持(大多维护模式),并提供一些功能,可能无法在Selenium2一段时间,包括支持多国语言的Java,JavaScript,红宝石,PHP,Python中的Perl和C中和支持几乎所有的浏览器有。Selenium RC的工程首先,我们将介绍Selenium RC的组件如何操作和作用,在各次运行测试脚本。RC元件Selenium RC的组成部分是: Selenium服务器启动并杀死的浏览器,解释和执行Selenese命令通过测试程序,并作为HTTP代理行为,通过浏览器和奥克兰之间的HTTP消息的拦截和验证。 客户端库提供了每种编程语言和Selenium RC服务器之间的接口。下面是一个简化的架构图.该图显示了客户端库的沟通与传递Selenium命令执行每个服务器。然后服务器通过Selenium命令到浏览器使用含Selenium核心JavaScript命令。浏览器,使用它的JavaScript解释器,执行Selenium命令。这将运行Selenese的行动或验证您在您的测试脚本中指定。Selenium服务器Selenium服务器接收Selenium命令,从你的测试程序,解释他们,回报你的程序运行这些测试的结果。RC服务器捆绑Selenium核心,并自动注入到浏览器。发生这种情况时,你的测试程序打开浏览器(使用一个客户端库的API函数)。Selenium的核心是一个JavaScript程序,实际上是一组JavaScript函数的解释和执行Selenese命令使用浏览器内置的JavaScript解释。服务器接收Selenese命令,从你的测试程序,使用简单的HTTP GET / POST请求。这意味着你可以使用任何编程语言,可以发送HTTP请求来自动化Selenium测试。客户端库客户端库提供的编程支持,允许你运行Selenium命令,从自己的设计方案。是为每个受支持的语言有不同的客户端库。Selenium客户库提供了一种编程接口(API),即一组功能,从你自己的程序运行Selenium命令。在每个接口,是一种编程功能,支持每个Selenese命令。客户端库需要Selenese命令,并通过它来处理具体的行动或测试下测试对应用程序(AUT)Selenium服务器。客户端库也收到该命令的结果,并把它传递回你的程序。您的程序可以接受的结果,并存储到一个程序变量,并报告成功或失败的,或可能采取纠正措施,如果它是一个意外的错误。因此,要创建一个测试程序,你只要写一个程序,运行一套Selenium命令使用一个客户端库API。可选,如果你已经有一条SeleneseSeleniumIDE中创建的测试脚本,你可以生成Selenium RC的代码。SeleniumIDE可以转换(使用其导出“菜单项)到一个客户端驱动程序的API函数调用Selenium命令。看到从Selenium-IDE导出RC代码的具体SeleniumIDE章。安装安装是相当为Selenium名不副实。Selenium在您所选择的编程语言提供的库。你可以下载他们的下载页面一旦你选择了使用的语言,你只需: 安装Selenium RC服务器。 建立使用特定语言的客户端驱动程序的编程项目。安装Selenium服务器Selenium RC服务器仅仅是一个Java的jar文件(Selenium服务器,独立。JAR),它不需要任何特殊的安装。只要下载并解压所需的目录服务器是足够的。运行Selenium服务器任何测试开始之前,你必须启动服务器。去Selenium区局的网站服务器位于目录,并运行下面的命令行控制台。Java的罐子Selenium服务器,独立的罐子。这可以简化创建一个批处理或包含上述命令外壳可执行文件(在Windows和Linux上。SH BAT)。然后建立一个快捷方式在桌面上的可执行文件,只需双击图标启动服务器。对于服务器来运行,你需要安装Java和PATH环境变量的正确配置,从控制台运行。您可以检查是否有Java的正确安装在控制台上运行以下。Java的版本如果你得到一个版本号(需要1.5或更高版本),你准备好开始使用Selenium RC的。使用Java客户端驱动程序 Selenium的的Java客户从SeleniumHQ的驱动程序zip下载页面。 jar文件提取SeleniumJava-的。 打开您想要的Java IDE(Eclipse中,NetBeans中的IntelliJ,NetWeaver的,等等) 创建一个Java项目。 Selenium的Java 。jar文件添加到您的项目作为参考。 添加到您的项目的classpath文件SeleniumJava-的。罐子。 从Selenium-IDE,导出脚本到一个Java文件,它包含在你的Java项目,或写在Java Selenium测试使用的SeleniumJava的客户端API。在本章后面介绍的API。您可以使用JUnit或TestNG的运行测试,你可以写你自己的简单的main()程序。在本节后面解释这些概念。 从控制台运行Selenium服务器。 从Java IDE或命令行执行测试。Java测试项目配置的详细信息,请参阅附录部分使用Eclipse配置Selenium RC的配置Selenium钢筋混凝土的IntelliJ。使用Python客户端驱动程序 安装Selenium通过画中画,说明挂钩在SeleniumHQ下载页面 无论是在Python写Selenium测试或从Selenium-IDE导出脚本到一个python文件。 从控制台运行Selenium服务器 从控制台或你的Python IDE执行测试关于Python客户端驱动程序配置的详细信息,请参阅附录的Python客户端驱动程序配置。使用。NET客户端驱动程序 从SeleniumHQ下载页面下载Selenium RC的 解压缩文件夹 下载并安装NUnit的(注:可以使用NUnit的,如果你不熟悉但与NUnit,你也可以写一个简单的main()函数来运行测试,但是NUnit的测试引擎测试引擎是非常有用的。 。) 打开你想要的。NET IDE(Visual Studio中,SharpDevelop的,MonoDevelop中) 创建一个类库(DLL) 下列DLL添加引用:nmock.dll,nunit.core.dll,NUnit的。framework.dll,ThoughtWorks.Selenium.Core.dll,ThoughtWorks.Selenium.IntegrationTests.dll和ThoughtWorks.Selenium.UnitTests.dll 写在你的Selenium测试。NET语言(C中,VB.NET),或从Selenium-IDE导出脚本C文件,并复制到您刚刚创建的类文件代码。 写你自己的简单main()程序,或您可以在您的项目包括NUnit的运行测试。在本章稍后解释这些概念。 从控制台运行Selenium服务器 无论是从IDE运行测试,从NUnit的GUI或命令行对于使用Visual Studio。NET客户端驱动程序配置的具体细节,请参阅附录。NET客户端驱动程序的配置。使用Ruby客户端驱动程序 如果你不已经有RubyGems的安装RubyForge的 运行安装Selenium客户端宝石 在你的测试脚本的顶部,添加要求“Selenium/客户端” 写测试脚本使用任何Ruby测试工具(如测试:单位,迷你:测试或RSpec的)。 从控制台运行Selenium RC服务器。 以同样的方式,你可以运行任何其他的Ruby脚本,执行测试。对于Ruby客户端驱动程序的配置的详细信息,请参阅的Selenium客户文件从Selenese的一个程序使用Selenium RC的首要任务是转换成一种编程语言,你的Selenese的。在本节中,我们提供了几种不同的语言,具体的例子。样品测试脚本让我们先从一个例子Selenese的测试脚本。试想记录以下测试使用Selenium-IDE。打开/类型qSeleniumRCclickAndWaitbtnGassertTextPresentSeleniumRC结果*注:此示例将使用谷歌搜索页面Selenese的代码作为编程这里是测试脚本出口(通过Selenium IDE)每个受支持的编程语言。如果你有至少一个面向对象编程语言的基本知识,你就会明白如何Selenium运行Selenese命令,通过阅读这些例子之一。看到在一个特定的语言,例如,选择其中一个按钮。 / *添加JUnit框架到你的classpath,如果已经不存在 这个例子*工作 * / 包 COM 。例如测试;进口 com.thoughtworks.selenium *。进口 的java.util.regex.Pattern ; *Selenium区局“ ); 在下一节,我们将解释如何建立一个测试程序,使用生成的代码。编程测试现在,我们将说明如何编写您自己的测试,在每个受支持的编程语言使用的例子。基本上有两个任务: 成从Selenium-IDE编程语言生成脚本,可以选择修改结果。 编写一个非常简单的主程序执行生成的代码。或者,您可以通过像JUnit或TestNG Java或NUnit的测试引擎平台。NET,如果你正在使用这些语言之一。在这里,我们显示的语言具体的例子。语言特定的API往往从一个到另一个不同,所以你会发现为每一个单独的解释。 Java的 C中 蟒蛇 红宝石 使用Perl,PHPJava的对于Java,人们在使用JUnit或TestNG测试引擎。一些开发环境如Eclipse插件通过这些直接的支持。这使得它更容易。教学JUnit或TestNG是超出了本文档的范围,但是材料可在网上找到有提供出版物。如果您已经是“Java的店”的机会是你的开发已经有一些经验,这些测试框架之一。你可能会想重命名“NewTest”改为测试类,你自己选择的东西。此外,您将需要在声明中改变了浏览器打开参数:Selenium =新DefaultSelenium (“localhost”的,4444 “* iehta” ,“/” ) ;SeleniumIDE生成的代码会是这个样子。这个例子注释手动添加额外的清晰度。封装 COM 。例子。测试; / /指定我们的测试包进口 com.thoughtworks.selenium * ; / /这是司机的进口。你会使用这个实例化/ /浏览器,使它成为你所需要的。进口 的java.util.regex.Pattern ; / /SeleniumIDE添加的模块,因为它有时用于模式。您可以删除模块,如果它在你不使用/ /脚本。公共 类 NewTest, 延伸 SeleneseTestCase / /我们创建我们的Selenium测试用例 公共 无效 的setUp () 抛出 异常 设置(“/” ,“火狐” ); / /实例化和启动浏览器 “公共的 无效 testNew () 抛出 异常 Selenium。开放(“/” ); Selenium型(“Q” ,“Selenium *Selenium区局“ ); / /这是真正的考验步骤 C的与Microsoft.NET。NET客户端驱动程序的工作。它可用于任何类似NUnit的测试的。NET框架或Visual Studio 2005 Team System中。SeleniumIDE假定您将使用您的测试框架NUnit的。在下面生成的代码,你可以看到这一点。它包括确定为每个测试类的成员函数的作用与相应的NUnit的属性一起使用NUnit的声明。你可能会重命名“NewTest”改为测试类,你自己选择的东西。此外,您将需要在声明中改变了浏览器打开参数:Selenium =新DefaultSelenium (“localhost”的,4444 “* iehta” ,“/” ) ;生成的代码将类似于此。你可以用NUnit来管理你的测试执行。或者,你可以写一个简单的main()程序实例测试对象和运行的三种方法中,SetupTest()中,TheNewTest(),反过来TeardownTest()。Python的pyunit是使用Python的测试框架。要了解Pyunit参考其官方文档。基本测试结构是:红宝石SeleniumIDE生成合理的Ruby,但需要老Selenium宝石的。这是一个问题,因为官方的Ruby驱动Selenium是Selenium的客户端的宝石,老Selenium宝石的。事实上,Selenium宝石甚至不再正在积极发展。因此,它是明智的更新如下IDE所产生的任何Ruby脚本:1。1号线,改变要求“Selenium”,要求“Selenium/客户端”2。第11行,改变Selenium: SeleniumDriver.new到Selenium:客户: Driver.new的你也可能要改变类的名称,东西多信息“无题”,并改变测试方法的名称“test_untitled比其他的东西。”下面是创建一个简单的例子,通过修改SeleniumIDE生成的Ruby代码,如上所述。的Perl,PHP的文档团队成员没有用过Perl或PHP的Selenium RC。如果您正在使用这两种语言之一的Selenium RC,请与文档团队联系(参见上作出贡献的章节)。我们很想从你和你的经验,包括一些例子,以支持Perl和PHP用户。学习API在Selenium RC API使用命名约定,假设你理解Selenese的,大部分的接口将是不言自明。然而,在这里,我们解释了最关键的,可能不太明显的方面。启动浏览器设置(“/” ,“火狐” );这些例子都打开浏览器,并表示该浏览器的程序变量分配一个“浏览器实例”。然后用这个程序变量调用从浏览器的方法。这些方法执行Selenium命令,即如开放或类型或校验命令。创建浏览器实例时需要的参数是:主持人指定的服务器所在的计算机的IP地址。通常,这是作为客户端运行的同一台机器,所以在这种情况下,本地主机通过。在一些客户,这是一个可选参数。端口指定服务器正在监听等待客户端建立连接的TCP / IP套接字。这也是在某些客户端驱动程序的可选。浏览器你想运行测试的浏览器中。这是一个必需的参数。网址下测试应用程序的基础URL。这需要所有的客户端库和启动浏览器的代理AUT的沟通是不可或缺的信息。请注意,一些客户端库需要浏览器开始通过调用其明确的start()方法。运行命令一旦你的浏览器初始化,并分配给一个变量(通常命名为“Selenium”),您可以通过各自的方法调用从浏览器中的变量,它运行Selenese命令。例如,调用类型的Selenium对象的方法:selenium.type(“字段ID”,“输入字符串”)在后台浏览器实际上将执行类型的操作,基本上是相同的用户输入到浏览器,使用的定位和你在方法调用中指定的字符串。报告结果Selenium RC的不报告结果有其自身的机制。相反,它允许你建立你的报告,定制您需要使用您选择的编程语言的特点。这是伟大的,但如果你只是想东西快,这已经为你做了吗?往往是现有库或测试框架,可以更快地满足您的需求比开发自己的测试报告码。测试框架的报告工具测试框架为许多编程语言提供。这些,连同其执行你的测试提供一个灵活的测试引擎的主要功能,包括报告结果的库代码。例如,Java有两种常用的测试框架JUnit和TestNG。NET中也有其自己的,NUnit的。我们不会在这里,自己教的框架,超越本用户指南的范围。我们将简单地介绍有关的功能,随着一些技术可以应用到Selenium的框架。然而,随着互联网上的信息有可以用这些测试框架的好书。测试报告图书馆也有专门用于报告测试结果,在您选择的编程语言创建的第三方库。这些经常支持各种如HTML或PDF格式。最好的办法是什么?新的测试框架的大多数人将开始与框架的内置报告功能。从那里将检查任何可用的库,因为这是较少的时间比开发自己的消费。当你开始使用Selenium毫无疑问,你会开始把自己的“打印报表”报告进展情况。这可能会逐渐导致你发展自己的报告,可能在并行使用库或测试框架。无论如何,经过初步的,但短期的,学习曲线,你会自然发展自己的情况最好。试验报告的例子为了说明这一点,我们将引导您Selenium支持的一些其他语言的一些特定的工具。这里列出的是常用的,并已被广泛用于本指南的作者(因此建议)。在Java中的测试报告 如果Selenium测试用例的开发使用JUnit然后JUnit的报告可以被用来生成测试报告。请参阅的JUnit的具体报告。 如果Selenium测试用例开发使用TestNG,然后没有外部的任务需要生成测试报告。TestNG的框架生成一个HTML报告,测试的详细列表。见更多TestNG的报告。 ReportNG是一个HTML报告TestNG的框架插件。它旨在作为替代默认TestNG的HTML报告。ReportNG,测试结果提供了一个简单的彩色编码。更多看到ReportNG。 另外,尝试使用TestNG-XSLT的一个很好的总结报告。看起来像这样一个TestNG XSLT报告。看到TestNG的XSLT更多。记录Selenese命令 记录Selenium可以用来生成一个伴随着每一个成功或失败的Selenese命令在您的测试报告。测井Selenium扩展Java客户端驱动程序添加Selenese的记录能力。请记录Selenium。Python的测试报告 当使用Python客户端驱动程序,然后的HTMLTestRunner可以用来生成一个测试报告。看到HTMLTestRunner。Ruby测试报告 如果RSpec框架用于在Ruby编写Selenium测试用例,那么它的HTML报告可以用来生成一个测试报告。参阅更多RSpec的报告。注意如果你感兴趣的语言独立的日志是怎么回事,来看看Selenium服务器记录添加一些香料测试现在我们将使用Selenium RC的原因,将编程逻辑添加到您的测试。这是任何程序相同。使用条件语句和循环控制程序流。此外,您可以使用I / O汇报工作进度信息在本节中,我们将展示如何编程语言结构,可以与Selenium结合,以解决共同的问题测试的一些例子。你会发现你的过渡,从简单的测试页面元素的存在动态功能测试,涉及多个Web页面和不同的数据验证预期的结果,你会需要编程逻辑。基本上,SeleniumIDE不支持迭代和标准条件语句。Selenese参数中嵌入JavaScript的,你可以通过一些条件,但是迭代是不可能的,大多数情况下,将是一种编程语言中要容易得多。此外,您可能需要进行错误恢复的异常处理。对于这些原因和其他人,我们编写了本节说明使用的通用编程技术,给你更大的核查权力“在你的自动化测试。C和Java都写在本节中的例子,虽然代码很简单,可以很容易地适应其他语言的支持。如果你有一个面向对象编程语言的一些基本知识,你不应该有困难的理解本节。迭代迭代是最常见的人在他们的测试需要做的事情之一。例如,您可能要来多次执行搜索。或者,也许你需要核实您的测试结果来处理“”从数据库返回的结果集。使用相同的Google搜索例如我们前面使用,让我们的检查Selenium搜索结果“。这个测试可以使用Selenese的:打开/类型qSeleniumRCclickAndWaitbtnGassertTextPresentSeleniumRC结果*类型qSeleniumIDEclickAndWaitbtnGassertTextPresentSelenium IDE的结果*类型qSelenium电网clickAndWaitbtnGassertTextPresentSelenium网格结果*代码已被重复执行相同的步骤3次。但多份相同的代码是不是好方案的做法,因为它更多的工作来维持。通过使用一种编程语言,我们可以遍历一个更加灵活和维护的解决方案的搜索结果。在C中:/ / String值的集合。的String ARR = “IDE” , “RC” ,“网格” ;/ /为每个字符串数组编曲执行循环。的foreach (字符串 在 ARR ) SEL 。开放(“/” ); SEL 。类型(“Q” ,“Selenium” + ); SEL 。点击(“ btnG“ ); SEL 。waitForPageToLoad (“30000” ); assertTrue (“预期的文字:” + + “丢失”页上 , 选择isTextPresent (“Selenium”的结果* + S ); 条件语句在测试中使用的条件下,我们先从一个例子来说明。运行Selenium测试时遇到的一个共同问题时,会出现预期的元素不是页。例如,当运行以下行:Selenium。类型(“Q” ,“Selenium” + S );如果不是页面上的元素“Q”,则抛出一个异常:COM 。ThoughtWorks的Selenium。SeleniumException : 错误: 元 这可能会导致中止测试。对于一些测试,就是你想要的。但往往是不可取的,因为你的测试脚本有许多其他后续测试执行。更好的办法是先验证元素是否是真的存在,然后采取的替代品时,它不是。让我们来看看在这个使用Java。/ /如果元素是可用页,然后执行操作类型。(Selenium。isElementPresent (“Q” ) Selenium型(“Q” ,“Selenium区局” ); 系统。出来。输出(“元“ + q + 。“页” )这种方法的优点是继续执行测试,即使一些UI元素不是页。从测试执行的JavaScriptJavaScript的行使Selenium是不能直接支持的应用程序非常方便。的getEvalSeleniumAPI的方法可以用来执行从Selenium RC的JavaScript。考虑一个应用程序有没有静态标识符“复选框。在这种情况下,人们可以评估从Selenium RC的JavaScript得到所有复选框的ID,然后行使这些权利。公共 静态 字符串 getAllCheckboxIds () 字符串 脚本 = “VAR inputId =新的Array();” ; / /创建数组在Java脚本的 脚本 + = “VAR CNT = 0” / /计数器的复选框ID的。 脚本 + = “VAR inputFields =新的Array();” ; / /创建数组在Java脚本的 脚本 + = “inputFields window.document.getElementsByTagName(输入);” ; / /收集输入元素 脚本 + = “(VAR I = 0; inputFields.length; I + +)” ; / /通过循环收集元素的 脚本 + = “。(inputFields i的ID = NULL” + “& inputFields I !ID =未定义“ + “的& inputFields 我的getAttribute(类型)=复选框) / /如果输入字段类型复选框并输入id是不是空 的脚本 + = “inputId CNT = inputFields I ID;。” + / /保存检查框ID inputId阵列。 “CNT + +;” + 。/ /递增计数器 “” + 。的if / /端 “” / /结束 脚本 + = “inputId.toString的();” ; / /转换为字符串的数组。的 String checkboxIds = Selenium。getEval (脚本)。分裂(“” ); / /拆分。字符串的 回报 checkboxIds ; 指望在页面上的图像数:Selenium。getEval (的“window.document.images.length;” );请记住在DOM中表达的情况下使用默认Selenium窗口,而不是测试窗口被称为窗口对象。服务器选项当服务器启动时,命令行选项可以用来更改默认的服务器行为。回想一下,服务器开始运行以下。Java的罐子Selenium服务器,独立的罐子。看到选项列表,运行与服务器的-h选项。Java的罐子Selenium服务器独立的 JAR-H您会看到所有的选项,您可以使用服务器和简要说明每个列表。提供描述不会永远是不够的,所以我们提供了一些更重要的选项解释。代理配置如果您的AUT的背后是HTTP代理需要验证,那么你应该配置把xyHost,xyPort,xyUser和xyPassword使用以下命令。Java的罐子Selenium服务器独立的 JAR-DxyHost = -DxyPort = 8080 DxyUser =名- DxyPassword =密码多窗口模式如果您正在使用Selenium1.0,你也许可以跳过这一节,因为多窗口模式是默认的行为。然而,默认情况下,前版本1.0,Selenium跑了一个子帧中的应用程序如下所示,在测试。一些应用程序没有正常运行在一个子帧,需要被加载到窗口的顶部框架。多窗口模式选项允许AUT的,而不是在默认的框架,然后,它可以有顶部框架,它需要在一个单独的窗口运行。对于旧版本的Selenium,则必须指定多窗口模式,明确以下选项: - 多窗口至于SeleniumRC 1.0,如果你想运行测试,在一个单一的框架(即使用较早版本的Selenium标准),就可以说明这一点到Selenium Server使用选项 - singlewindow指定的Firefox配置文件Firefox不会同时运行两个实例,除非你为每个实例指定一个单独的配置文件。Selenium RC的1.0和更高版本会自动运行在一个单独的配置文件,所以如果您正在使用Selenium1.0,你也许可以跳过这一节。然而,如果你正在使用旧版本的Selenium,如果你需要使用特定的配置文件为您的测试(如添加HTTPS证书或安装一些插件),您将需要明确指定的个人资料。首先,创建一个单独的Firefox配置文件,执行此过程。打开Windows的“开始”菜单中,选择“运行”,然后键入并输入下列之一:firefox.exe-profilemanagerfirefox.exe - P使用对话框创建新的配置文件。然后,当你运行Selenium服务器,告诉它使用这个新的Firefox配置与服务器的命令行选项-firefoxProfileTemplate的路径,并指定使用它的文件名 和目录路径的轮廓。firefoxProfileTemplate “配置文件路径”警告一定要单独放在一个新文件夹从默认您的个人资料!Firefox的配置文件管理器工具将删除的文件夹中的所有文件,如果您删除的文件,不管他们是否是个人资料的文件或不。关于Firefox的配置文件的更多信息,可以发现在Mozilla的知识库运行Selenese的内使用的htmlSuite服务器直接你可以运行在Selenium服务器Selenese的HTML文件直接通过HTML文件到服务器的命令行。例如:Java的罐子Selenium服务器,独立的罐子。 这将自动启动,你的HTML的套件,运行所有测试,并保存一个不错的HTML报告的结果。注意当使用这个选项,服务器将开始测试,并等待一秒钟测试完成指定数量;时间内,如果测试不完整,该命令将退出一个非零退出代码,会产生任何结果文件。此命令行是很长,所以要小心,当你键入它。注意:这需要你通过在HTML Selenese的套房,而不是一个单一的测试。也意识到htmlSuite选项是不相容的,互动的,你不能在同一时间同时运行。Selenium服务器日志服务器端日志当启动Selenium服务器日志选项,可以用来记录宝贵的调试信息报告由Selenium服务器到一个文本文件。Java的罐子Selenium服务器,独立。的罐子日志selenium.log此日志文件是冗长超过标准的控制台日志(包括DEBUG级别的日志消息)。日志文件中还包括记录器的名称,并记录该消息的线程的ID号。例如:20时44分25秒调试 12 org.openqa.selenium.server.SeleniumDriverResourceHandler -开始新的浏览器465828 /顶端frame1张贴消息格式TIMESTAMP ( HH:MM:SS )水平线索记录仪-消息此消息可能是多行。浏览器端日志在浏览器端的JavaScript(Selenium睿)也记录重要的信息,在许多情况下,这些都可以成为更有用的最终用户比普通的SeleniumServer日志。要访问浏览器端日志,传递到Selenium Server- browserSideLog参数。Java的罐子Selenium服务器,独立的。罐子browserSideLog结合-browserSideLog必须日志参数,登录browserSideLogs(以及其他所有DEBUG级别的日志消息)到一个文件。指定路径到一个特定的浏览器你可以指定Selenium RC的一个特定的浏览器的路径。这是有用的,如果你有相同的浏览器的不同版本,和你想使用特定。此外,这是用来让你的测试对Selenium区局不直接支持的浏览器运行。当指定的运行模式,使用*定制浏览器的可执行文件的完整路径规范:*自定义Selenium钢筋混凝土建筑注意本主题试图解释的Selenium RC背后的技术实现。这不是为Selenium用户知道这个根本,但了解的一些问题,你可能会发现在未来可能是有用的。详细了解Selenium RC的服务器如何工作和为什么它使用代理注入和提高权限模式,你必须先了解同根同源政策。同根同源政策Selenium面临的主要限制是一脉相承的政策。这个安全限制被应用在市场的每一个浏览器,它的目标是,以确保网站的内容将永远是从另一个站点的脚本访问。同根同源的政策规定,在浏览器中加载任何代码只能运行在该网站的域名。它不能执行在另一网站的功能。因此,例如,如果浏览器中加载JavaScript代码,当它加载,它不能运行甚至装入的代码,如果这是您的另一网站。如果这是可能的,你打开任何网站上放置了一个脚本将能够读取您的银行帐户信息,如果您有其他选项卡上打开帐户页面。这就是所谓的XSS(跨站点脚本)。若要在此政策,Selenium的核心(和其JavaScript命令,使所有魔术发生)必须放置在应用测试(相同的URL)相同的起源。从历史上看,Selenium核心这个问题是有限的,因为它是用JavaScript实现。Selenium RC是没有,不过,同一原产地政策的限制。Selenium作为代理服务器的使用,避免了这个问题。从本质上讲,它告诉浏览器,在浏览器上的一个“欺骗”网站提供服务器的工作。注意你可以找到关于维基百科的网页上关于这个主题的更多信息同源策略和XSS攻击。代理注入第一种方法使用,以避免同样的原产地政策的Selenium是代理注入。在代理注入模式,Selenium服务器作为客户端配置HTTP代理12,所测试应用程序和浏览器之间的坐镇。然后口罩AUT的下一个虚构的URL(嵌入Selenium的核心和测试集,并提供他们,好像他们是从同一产地的到来)。1代理是在中间的第三人之间传递两部分球。它作为一个“Web服务器”,提供给浏览器的奥克兰。作为一个代理给Selenium服务器的“说谎”关于奥克兰的真实URL的能力。2浏览器推出的个人资料,设置本地主机配置:HTTP代理4444,这是为什么任何HTTP请求,浏览器将通过Selenium服务器和响应将通过它,而不是从真实服务器。下面是一个建筑图。作为一个测试套件,在您最喜爱的语言开始,出现以下情况:1. 客户机/驱动器建立了一个与SeleniumRC服务器的连接。2. Selenium RC服务器启动浏览器(或重用一个老),Selenium核心的JavaScript注入到浏览器加载网页的URL。3. 客户端驱动程序传递到服务器的Selenese命令。4. 服务器解释命令,然后触发相应的JavaScript在浏览器内执行该命令的执行。5. Selenium的核心指示浏览器,第一个指令行事,通常是开放的AUT页。6. 浏览器接收开放的要求,并要求从Selenium RC服务器设置为浏览器使用HTTP代理的网站的内容。7. Selenium RC服务器要求的页面与Web服务器进行通信,一旦它接受它,它的页面发送到浏览器屏蔽的起源看起来像页面来自同一服务器为核心Selenium(允许Selenium核心遵守同一原产地政策)。8. 浏览器接收到的网页,并在为它预留的框架/窗口呈现。高度特权的浏览器这种方法的工作流程是代理注入非常类似,但主要区别在于,浏览器是在一个特殊的模式称为推出更高权限,使网站做是不常用(因为这样做的事情允许XSS,或填充文件上传输入和漂亮的Selenium有用的东西)。Selenium的核心是通过使用这些浏览器模式,可以直接打开奥克兰和其内容,而不必通过整个奥克兰Selenium RC服务器的读/互动。这里是建筑图。作为一个测试套件,在您最喜爱的语言开始,出现以下情况:1. 客户机/驱动器建立了一个与SeleniumRC服务器的连接。2. Selenium RC服务器启动一个浏览器的URL(或重用一个老),将加载在网页Selenium核心。3. Selenium的核心是从客户机/驱动器(通过另一个HTTP请求向Selenium RC服务器)的第一条指令。4. Selenium的核心作用,第一个指令,通常开放AUT的页面。5. 浏览器接收开放的要求,并要求为页的Web服务器。一旦浏览器收到的网页,呈现在保留帧/窗口。处理HTTPS和安全弹出许多应用程序使用HTTP到HTTPS切换,当他们需要发送加密信息,如密码或信用卡信息。这是共同的,今天的许多Web应用程序。Selenium RC的支持。,以确保是真正的HTTPS站点时,浏览器将需要一个安全证书。否则,当浏览器使用HTTPS访问奥克兰,将承担该应用程序是不是信任。当这种情况发生时,浏览器显示安全弹出,而这些弹出窗口无法关闭使用Selenium RC的。处理HTTPS的Selenium RC测试时,你必须使用一个运行模式支持,并处理为您的安全证书。你指定的运行模式,当您的测试程序初始化Selenium。在Selenium RC的1.0 Beta 2和以后使用* Firefox或* IEXPLORE运行模式。在早期版本中,包括Selenium RC的1.0 Beta 1中,使用*铬或* iehta的运行模式。使用这些运行模式,你将不需要安装任何特殊的安全证书;Selenium区局会为您处理。在1.0版本的运行模式* Firefox或* IEXPLORE建议。不过,也有额外的* iexploreproxy和* firefoxproxy的运行模式。这些只是为了向后兼容,不应该使用,除非传统的测试程序的要求。它们的使用将呈现与安全证书处理和运行多个窗口,如果你的应用程序打开其他浏览器窗口的限制。在早期版本的Selenium RC,*铬或* iehta的运行模式,支持HTTPS的安全弹出的处理。这些被认为是吗?虽然他们变得相当稳定,许多人用他们的实验模式。如果您正在使用Selenium1.0,你并不需要,而不应使用,这些旧的运行模式。安全证书的解释通常情况下,您的浏览器会信任您正在测试的应用程序安装,你已经拥有一个安全证书。您可以检查您浏览器的选项或Internet属性(如果你不知道奥克兰的安全证书,请问您的系统管理员)。当Selenium加载您的浏览器,它注入代码,拦截浏览器和服务器之间的消息。现在的浏览器认为不可信的软件试图看起来像你的应用程序。它响应弹出消息提醒你。为了解决这个问题,Selenium区局(再次使用时支持这个)将安装其自身的安全证书,暂时在一个地方到你的客户机的浏览器可以访问它的运行模式。这个技巧的浏览器以为它访问一个网站从您的AUT的不同,有效地抑制了弹出。Selenium的早期版本中使用的另一种方法是安装您的Selenium安装提供的Cybervillians安全证书。大多数用户不再需要这样做,但是,如果您正在运行中的Selenium RC代理注入模式,您可能需要明确安装此安全证书。支持其他浏览器和浏览器配置SeleniumAPI除了Internet Explorer和Mozilla Firefox的支持对多个浏览器上运行的。看到SeleniumHQ.org网站支持的浏览器。此外,当浏览器不直接支持,你可能仍然对您选择的浏览器中运行Selenium测试,测试应用程序启动时,使用“*定制”的运行模式(即在Firefox或* IEXPLORE)浏览器。有了这个,你通过浏览器的可执行文件内的路径API调用。这也可以在交互模式下的服务器。CMD = getNewBrowserSession1 = *自定义C: P rogram文件 M ozilla火狐 M yBrowser.exe和2 = 具有不同的浏览器配置的运行测试通常Selenium RC的自动配置浏览器,但如果你启动浏览器,使用“*定制”的运行模式,可以强制Selenium区局推出的浏览器不使用自动配置。例如,你可以推出这样一个自定义配置的Firefox:CMD = getNewBrowserSession1 = *自定义C: P rogram文件 M ozilla火狐 F irefox.exe2 = 请注意,启动浏览器时,这种方式,你必须手动配置浏览器使用Selenium作为代理服务器。通常,这只是意味着打开浏览器的喜好和指定的“localhost:4444”作为HTTP代理,但这个指示可以从浏览器上的根本不同。请您浏览器的说明文件。要知道,Mozilla浏览器可以在不同的他们如何启动和停止。一个可能需要设置的MOZ_NO_REMOTE的环境变量,使一点Mozilla浏览器的行为更可预见的。Unix用户应避免使用shell脚本启动浏览器,它是普遍使用的二进制可执行文件(如Firefox斌)直接。故障排除常见问题当开始使用Selenium RC还有一个经常遇到的一些潜在的问题。我们提出他们连同他们的解决方案。无法连接到服务器当你的测试程序无法连接到Seleniu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 校园超市消防知识培训课件
- 2026届湖南省衡阳二十六中高二化学第一学期期末学业质量监测试题含答案
- 铸造造型试题及答案
- 街道特勤考试试题及答案
- 饥荒家园测试题及答案
- 校园安全知识培训课件专题
- 会议工作试题及答案
- 唐朝写诗考试题及答案
- 中工会考试试题及答案
- 产业招商面试题及答案
- NB∕T 10731-2021 煤矿井下防水密闭墙设计施工及验收规范
- 《用户体验要素》以用户为中心的产品设计课件
- 千方百剂操作流程
- 油品计量工(高级技师)技能操作理论考试总题库-上(单选题-下部分)
- DB32T 1553-2017 高速公路工程工程量清单计价规范
- 组织知识清单
- GB-T 1040.2-2022 塑料 拉伸性能的测定 第2部分:模塑和挤塑塑料的试验条件
- 城镇燃气安全管理专业知识
- 一页纸的劳动合同范本(5篇)
- 免疫缺陷病PPT精品课件
- 检验科感染管理质量自查表
评论
0/150
提交评论