付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Selenium私房菜系列1Selenium简现在主要包括以下4款:1.SeleniumCore:支持DHTML的测试案例(效果类似数据驱动测试),它SeleniumIDE和SeleniumRC的引擎2SeleniumIDE:FireFoxSeleniumRC:SeleniumRemoteControl。后续的系列文章我会主要针对SeleniumRC展开介绍。既然Selenium工具有4款这么多,那到底如何选择呢??我从"Selenium官网"这找了一Selenium SeleniumCore浏览器支仅很所需要安否否是否是是是是支持跨是是否是需要否是否否将保存到磁是是否是多语言支仅很仅这里没有介绍SeleniumGrid,但介绍了另外一个SeleniumCoreHTA,Selenium即为HTA模式,SeleniumCoreHTA可以在IE最高安全等级( 味着它仅能在IE下工作,由于限制较大,下面将排除对SeleniumCoreHTA的讨论。浏览器支持(1).SeleniumIDE仅可以在Firefox中工作firefoxiesafar等N款浏览器。(3).SeleniumCore支持的浏览器是最广的,这点和它的实现有关。作为IDERC的引擎,SeleniumCore几乎可以在任何浏览器中工作需 安装:是否需要在被 的服务端安装 ,还得在的服务器上装一个SeleniumCore,那是多搞笑的一件事。而SeleniumIDESeleniumCoreHTA不会被同源策略所限制,因为他们对浏 /selenium/这样 Java:准确的说是需要这项只有SeleniumRC需要,上面2中所说的“ 服务器”是一个Java程序,需 保存到磁只有SeleniumCore不能将任何写到磁盘上(因为它是用javascript写的,它不允许向磁盘写数据),其解决方案是当然你可以将发送到另外一台服务器保存。这也是SeleniumCore的一大限制。多语言支(1).SeleniumIDE仅支持Selenium语言(2).SeleniumRC支持很多语言,如:C#,Java,Python,Ruby等(3).SeleniumCore也是仅支持SeleniumSelenium语言的测试案例如下有辅助录制工具(如:FirefoxIDE,SeleniumCore等),不懂程序的测试人员都有循环(没有"For"表达式)。这会使编写复杂的测试变得甚至不可能。OK,现在我们来研究下到底该使用哪款工具开展(1).SeleniumIDE支持并且只支持Firefox浏览器,支持的浏览器太少,而依附于以把Selenium语言测试案例转为C#,Java等语言的测试案例,我建议使用SeleniumIDE+FireBug进 调用SeleniumRC运 但缺点也同样明显,SeleniumCore需要 (3).Selenium(3).SeleniumRC是我推荐使用的工具,它支持很多浏览器,可以使用C#,Java SeleniumRC作为默认的测试工具。<cd<cd<title>Greatest >Dolly <cd<title>Hideyour >Bonnie <cd<title>Empire >Bob <?xmlversion="1.0"encoding="ISO-8859-XPath是XML的查询语言,和SQL的角色很类似。以下面XML为例,介绍XPath语法自(xpath在编写Selenium案例时,少不免是要用到XPath的,现在外面关于XPath使用的参考资料很多,下面我直接转一篇关于XPath使用的文档。如果对XPath不熟悉请参考下文,你不需要去 搜索关于XPath的资料,因为下面的内容已经足够你测试时使用,如果你已熟悉XPath,本章大可忽略跳过定位节式。不过XPath是一种模式(Pattern),可以选出XML中,路径符合某个模式的所有节点出来。例如要选catalog的cd中所有price元素可以用:如果XPath的开头是一个斜线(/)代表这是绝对路径。如果开头是两个斜线(//)表以下的语选出文件中所有叫做cd的元素(在树中的任何层级都会被选出来):选择未知以下的以下的以下的 选出所有catalog的子元素中,包含有price作为子元素的元素选择出文件中的所有元选择分素。XPath的定义中没有第0元素这种东西。以下语法选择catalog中的最后一个cd元素:(XPathj并没有定义first()这种函式喔,用上例的[1]就可以取出第一个元素。以下语法选出含有price子元素的所有/catalog/cd以下语法选出price元素的值等于10.90的所有/catalog/cd元以下语法选出price元素的值等于10.90的所有/catalog/cd元素的price元选择一个以使用Or操作数(|)就可以选择一个以上的路径。例如||//title|以及price元选择所有title以及//title|元选择所有title以及/catalog/cd/title|选择属中所有叫做country的属性。以下语法选择出country属性值为UKcd以下语法选择出含有属性的所有cd选择所有含有country这个属性的cdSelenium私房菜系列3SeleniumAPI参考手大家大家在编写测试案例想查阅SeleniumAPI说明时,可以查阅本文,否则请跳过(注:这里API版本比较老,新版本的Selenium的API在这里不一定能找到。SeleniumAPI说明文档自)校验是否有产生正确的ElementElement1.1.ElementLocators(元 namelocatorHTML中相同nameidentifierlocatorHTML是否存在该id的元素,若不存在,查找第一个该name的元素xpathlocatorXPath表达式来定位HTML中的元素,xpath=//img[@alt='Theimagealttext']linklocatorlink来选择HTML中的连接或锚元素link=ThelinklocatorWithoutalocatorprefix,Selenium22StringMatchingPatterns 模式,用通配符"*"代表任意长度字符,"?"代表一个字正则表达式模式,用 正则表达式的形式匹配字符精确匹配模式,精确匹配整个字符串,不能用通配在没有指定字符串匹配前序的时候,在没有指定字符串匹配前序的时候,selenium默认使用golb模3Select3SelectOptionSpecifiersSelect项指定器通过匹配选项的id指定选项例如:id=option1描述了用户所会作出的操ActionactionactionAndWaitaction点击连接,按钮,点击连接,按钮,复选和单选如果点击后需要等待响应,则用JavaScriptalert框actionAndWaitaction出等待,open 在 在浏览器中打开URL,注意:该URLtype(inputLocator,模拟人手的输入过程,往指定的inputJohnelabel=Auslian ----根据指定时间暂停执-或等待服务器段响ee 等待input(hiddeninput)被赋予某值会轮流检测该值,所以要注意如果该值长时间一直不赋予 该值的话,可能会导致阻d 该值可以由自其他变量组合而成或通过 表达式赋值给量MrJohn$.{title}$.{firstname}把把指定input storeText,storeAttribute把指定元素的文本值赋予chooseCancel..,chooseCancel..,如手动选择OK也会同样地再次选择AssertVerify,Assert失败,则退出测试;当Verify失败,测试会继续运行。 assertLocation,assertTitle判断当前是在正确 assertLocation,assertTitle判断当前是在正确的页ene检查当前页面的title是否正MyMyassertValue(inputLocator,对于checkboxradio,如果已选择,则值为"on",反之为JohneJohn assertSelected,assertSelectedOptions检查select的下拉菜单中选中的选型是否和 择选项器)的选项相Johndorpdown2ddassertSelectOptions(selectLocator,assertSelectOptions(selectLocator,检查下拉菜单中的选项的文本是否和optionLabelList相 s 检查指 检查指定元素的文Mozilla类型的浏览器textContent取元素的文本,对IE类型的浏览器innerText取元ltl 检查在当前给用户显示的页面上是否有出现指定的文YouarenowYouarenowassertTextPresent,etc.assertTextPresent,etc. t 检查当前指定元素的属性talt-alt-assertTable(cellAddress,cellAddress的语法是 注意行列序号都是0deassertVisible,nonVisibleassertVisible,nonVisible Editable,non-editable检查指定的inpute框alert时会产生与手动点击'OK'注意:SeleniumJavaScript和和 情况一样默认情况下,Seleniumconfirmtrue, 按钮的效果。你能够通过 命让confirm()false.但你却没有检查的话,Seleniumaction-注意:在Selenium框-注意:Selenium不支持在时调用框 -JavaScriptmessage框-你检查的prompt的顺序-verifyPromptanswerOnNextPrompt-如果框出现了但你却没有检查,则Selenium参数和范围由简单的赋值到JavaScript表达式赋值Store,storeValue和storeTextVariableSubstitution变量替提供了一个简单的方法变量,语法$.{title}Fullnameis:trailing'JavaScript{Selenium私房菜系列4SeleniumIDE前前 ,SeleniumIDE是Firefox的一个插件,是可以进录制以及案例转换所以SeleniumIDE+Firebug会成为你日后写测试案例的两大助手(IE下可以使SeleniumCore+IEDevelperToolBar)Selenium::IDEIDE框 都是由一条一条的Action(行为)组成,而每个Action对象呢?呵呵,这里就用到了XPath,不熟悉可以参考《XPath的使用》,而Value当弹出上面的IDE窗口后,我们就可以开始Selenium红色的圆点,当它下按时(如上图)就表示IDE正在进 录制。OK,开始录制,上图例子中,我的操作步骤如下(1).在地址栏输入 (2).登 首页后,在查询框输入“hyddd”(3).按 一下”按(4).进入搜索结果页面后,右键单击第一条记录(即:hyddd博客园),在右键弹出菜单中,单击“VerifyTestPersenthyddd-博客园”。(5).单击第一条记录(即:进入hyddd-博客园(6).Firefox弹出一个新Tab页面,并进入了我的OK,现在看看我们的SeleniumIDE录制的结果吧上图中,中间的表格就是录制的结果,你可以按“运行”重新回放看看,值得注意的是,在运行时,Firefox可能会认为中最后一个操作(6)为弹出框,浏览器会自动其弹出,这个需要设置一下Firefox,具置是: bar->Tools->options->content->Blockpop-upWindow,你可以把钩去掉或者在Exceptions里面添加相应的 恩,到此为止 录 完成在运行后,你会发现IDE表格的颜色发生了变化,运行前,表格为白色,成功运行完毕后,表格为青色,其中还分为深青色和浅青色两种,浅青色表示:动作成 4.SeleniumIDE本文开始时提到了,SeleniumIDE看吧SeleniumSeleniumIDE可以把HTML转为C#,JAVA日后写SeleniumRCSelenium私房菜系列5第一SeleniumRC《Selenium》中讲过,SeleniumRC持多种语言编写测试案例,如:C#,Python。在工作中,我倾向于是Python类动态语言编写测试案例,因为这样的测试案例无需编译:>,试想如果1000个测试案例,每个都要编译,那会给编译服务器很大的压力,而且案例修改后,还得SeleniumRC上一篇《SeleniumIDE的使用》中,提到了SeleniumIDE以把录制的转为其他语言的,所以我继续用上一篇的为例子,下面是把语言转换为C#后的代码:usingSystem;usingSystem.Text;usingSystem.Text.RegularExpressions;usingSystem.Threading;usingNUnit.Framework;usingSelenium;namespace{publicclass{privateISeleniumprivateStringBuilderpublicvoid{selenium=newDefaultSelenium("localhost",4444,"*chrome","verificationErrors=new}publicvoid{{}catch{//Ignoreerrorsifunabletoclosethebrowser }Assert.AreEqual("",}publicvoid{selenium.Type("kw","hyddd");{resent("hyddd-博客园"));}catch(AssertionException{ }}}}程的),步骤如下建立Test导入DLL把selenium-dotnet- ThoughtWorks.Selenium.UnitTests.dll加入项目:把上面自动生成的代码再改一usingSystem;usingSystem.Text;usingusing.VisualStudio.TestTools.UnitTesting;usingSelenium;namespace{publicclass{publicvoid{//Selenium试服务器位置//4444为Selenium测试服务器端口//*iexplore为启动浏览器类型,我把它 ISeleniumselenium=newlenium("",4444,"*iexplore","selenium.Type("kw","hyddd");hyddd-博客园")); }}}启动Selenium测试服打开cmd进入selenium-server-1.0-beta- ,输入-jarselenium-server.jar”(需要先JRE),启动Selenium测试运试案(2).恩,案Pass如果案例失败的话,ErrorMeesage说明失败的原(注意:和Firefox一样,IE下也 弹出网页功能,修改设置方法Bar->Tools->PopupBlocker->TurnoffPopupBlockerPopupBlockerSettingsSelenium6--SeleniumRC工作原前前一篇已经比较详细讲述了如何使用SeleniumRC进行Web测试,但到SeleniumRC是什么?或者它由哪几部分组成呢一.SeleniumRC的组成关于这个问题,我拿了官网上的一幅图来说明这个问题SeleniumSeleniumRC(1).Selenium ,SeleniumCore。其中SeleniumCore是被SeleniumServer嵌入到浏览器页面中的。其实SeleniumCore就是一堆JS函数的JS写测试案例时用来控制SeleniumServer二.SeleniumRC与Testcase(1).测试案例(Testcase)通过Lib的接口向SeleniumServer发送Http请求,要求和SeleniumServer建立连接。为什么要通过发送Http请求控制SeleniumServer而不采用其他方式呢?从上文可以看出,SeleniumServer是一个独立的中间服务器(确切地说是服务器),它可以架设在其他机器上!所以测试案例通过发HTTP请求去控制SeleniumServer是很(2).Selenium(2).SeleniumServer的Launcher启动浏览器,把SeleniumCore面当中,并把浏览器 设置为SeleniumServer的 (3).Lib的接口向SeleniumServer发送HttpServer对请求进行解析,然后通过Http 发送JS命令通知SeleniumCore执(4).SeleniumCore(5).浏览器收到新的页面请求信息(因为在(4)中,SeleniumCore的操作可能的页面请求),于是发送Http请求,请求新的Web页面。由于SeleniumServer在启动浏览器时做了手脚,所以SeleniumServer新(6).SeleniumServer接收到浏览器的发送的Http请求后,自己重组HttpWeb(7).SeleniumServer的把接收的WebSeleniumRCSeleniumServer下一篇继续介绍7Selenium7SeleniumRC理继续继续前一篇的问题,为什么SeleniumRC中的SeleniumServer需要以这服务器的形式存在?其实,这和浏览器的“同源策略”(TheSame )有关一.什么是同同源策略,它是由一个著名的安全策略,现在所有的可支javascript的浏览器都会使用这个策为什么需要同源策略,这里举个例子假设现在没有同源策略,会发生什么事情呢?大家知道,JavaScript可以做很多东西,比如:/修改网页中某个值。恩,你现在打开了浏览器,在一个tab窗口中打开了银行,在另外一个tab窗口中打开了一个,而那个挂了一个的专门修改银行信息的JavaScript,当你这个并且执行它JavaScript时,修改,会非常严事情发生,看下图比如说,浏览器的两个tab页中分别打开了ht /index.html和 /index.html,其中,JavaScript1和JavaScript3是属于 ,而JavaScript2是属于谷歌的 ,当浏览器的tab1要运行一个 同源的才能被执行,所谓同源,就是指、协议、端口相同。所以,tab1只能执行JavaScript1和JavaScript3,而JavaScript2不能执行,从而防止其他网页对本网页的篡改。二.SeleniumServer为什么以这种服务器的上面说了同源策略,那同源策略的SeleniumServer有什么关系呢??呵呵,上一篇,SeleniumCore是一堆JS函数的集合,它是我们操作浏览器的基础。当存在因为SeleniumCoreJS的“源”localhost,所以浏览器会SeleniumCoreJS在测试页面上执行,这就是为什么在本系列第一篇中说,如果只使用SeleniumCore进试,需要把SeleniumCore安装到服务器上。为了解决上面这个问题,SeleniumRC中的SeleniumServer就以服务器的形式出现了,下图说明它是如何借助的蒙骗浏览器的:>SeleniumServer以的形式存在,通过修WebSite的源信息,从而达到浏WebSiteSeleniumCore来自同一个“源”服务器!Selenium私房菜系列8--SeleniumServer的交互模式开始。在《第一个SeleniumRC测试案例》中,我们以命令“java-selenium-server.jar”启动了SeleniumServer,其实在启动SeleniumServer时,,SeleniumServer交互模式令为“java-jarselenium-server.jar-inctive”。交互模式SeleniumServer提供的一种快速的测试方法,你可以对SeleniumServer输入命令从而直接启动测试。1SeleniumServer交互模com。控制SeleniumServer启动浏览器,以及创建Session.看过《深入了解SeleniumRC工作原理(1)》的应该了解:我们所编写的测试案例实是通过发送Http请求实现对SeleniumServer的控制,而测试案例所发送的请求就正是:--->Requesting 。我们可以再打开一IE浏览器,在地 ,回车!看,SeleniumServer又为此产生了一个Session了!呵呵:>(2).这里,SeleniumServer为上面的请求随机生成了一个SessionID:(3).如果一切正常,SeleniumServer最后会出现GetResultOk的字样,并出现3.控制浏览 p,输入 噢,浏览器成 /webhp了:>总结(1).在SeleniumServer中输入命令的格式为mand&1=Target&2=Value&SessionID=…,这和SeleniumIDE的案例语句很像。(2).在输入命令后,SeleniumServer会发条Http请求给自己,请求URL格式SeleniumServer进 (3).另外,sessionId是很重要的一个参数,当一个SeleniumServer同时运行多个测试案例时,SeleniumServer就是通过sessionId判断到底该操作哪个浏览器窗口。而在下面的C#代码中: selenium就相当于上文中的sessionId(4).在SeleniumServer启动一个Session时,必须先指定一个“源”(原因见《深入了解SeleniumRC工作原理(2)》),在上面的代码中htt ISeleniumselenium=newDefaultSelenium("",4444,"*iexplore","htt SeleniumSeleniumServer提示说;如果测试案例是运行在*iehta或者*chromeSeleniumServer的运行模式 injectionmode即可避免问题出现我们在启动Session时,定义了源为htt 我们打开的却是ht 恩,在这里,我不得不承认之前在《深入了解恩,在这里,我不得不承认之前在《深入了解SeleniumRC工作原理(1)》中,为其实,SeleniumServer其实有2(1).HeightenedPrivileges现在SeleniumServer启动的默认模式为:HeightenedPrivilegesBrowsers。如果 Injection模式,可以加参数“- 入了解SeleniumRC工作原理(1)》中介绍SeleniumRC与Testcase关系,其实就 Injection的工作模式,因为我个人认为 Injection设计模式 Injection模式作介绍。在这里我补充说明一下,为什么HeightenedPrivilegesBrowsers模式不能避免上面的问题。先看看Selenium和和Injection模式不一样,在HeightenedPrivilegesBrowsersBrowser对Web的请求没有经过Http ,所以返回的Web页面就有可能和Seleniu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025 高中信息技术数据与计算之数据挖掘的聚类算法的谱聚类算法应用课件
- 春季祭祀扫墓防火安全指南
- 农业机械使用技术全解析
- 2026年能源行业TCFD披露:转型风险与物理风险双重暴露
- 2026年气候情景分析韧性评估企业落地实施实务
- 2026年银行智能体应用场景全景图:零售 对公 财富 运营
- 2026年手术机器人术中导航与配准精度评价方法
- 2026年低空空域北斗基准站增强信号覆盖评估报告
- 2026年高光谱成像检测装备农产品品质分级应用
- 2026年ECMO围手术期抗凝管理目标与监测指标指南
- 混凝土梁板裂缝施工方案
- 工厂安全生产标准化管理办法
- 2025年宁夏中考数学试题卷(含答案解析)
- 乳腺检查试题及答案
- 建筑与市政工程施工现场临时用电安全技术标准(2024版)
- 生活水泵房设备安装施工方案
- 2026高中地理学业水平合格考试知识点归纳总结(复习必背)
- 2025年高考日语试卷及答案详解
- 光伏电站巡检作业流程
- 船舶档案管理办法
- 水利工程施工管理课件
评论
0/150
提交评论