ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:24.59KB ,
资源ID:12358812      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/12358812.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Seleniumweb Test experience.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Seleniumweb Test experience.docx

1、Selenium web Test experienceSelenium web Test experience简介Selenium 是一个健壮的工具集合,跨很多平台支持针对基于 web 的应用程序的测试自动化的敏捷开发。它是一个开源的、轻量级的自动化工具,很容易集成到各种项目中,支持多种编程语言,比如 .NET、Perl、Python、Ruby 和 Java 编程语言。利用 Selenium 测试 Ajax 应用程序Asynchronous JavaScript and XML (Ajax) 是一种用于创建交互式 web 应用程序的 web 开发技术。Ajax 应用程序的一个特征是,不会导致

2、一次重新加载整个页面。相反,浏览器将具有一个对服务器的异步调用以获得数据,并且只刷新当前页面的特定部分。要提高 web 页面的交互性、响应速度和可用性,测试 Ajax 应用程序的过程需要一些改变。我们首先刷新 web 页面,然后就是等待,直到异步调用完成。完成之后,可以继续进行验证。此时,出现适当等待时间的问题。一种选择是在测试应用程序中简单地暂停一段固定的时间,这在大多数情况下都是可行的。在有些情况下,比如说网络吞吐量很慢时,Ajax 调用在暂停一段特定的时间之后没有完成,会导致测试用例失败。另一方面,如果暂停时间太长,会使得测试慢得不可接受。Selenium 提供了更为高效的处理等待的方式

3、。一种可能做法是,使用类 com.thoughtworks.selenium.Wait 来等待一个元素或文本在页面上出现或消失。可以在 until() 函数中定义等待的退出条件,或者扩展 Wait 类来实现等待退出。清单 1 是使用 Wait 类的样例代码。它将在条件满足时停止等待,或者在超出最大等待时间时返回一个超时异常。清单 1. 等待元素或文本出现 Wait wait = new Wait() public boolean until() return selenium.isElementPresent(locator); / or selenium.isTextPresent(patt

4、ern); ;wait.wait(, timeoutInMilliseconds);另一种选择是使用 Selenium 中的 waitForCondition 函数,一个 JavaScript 代码片段将被作为参数传递给该函数。一旦 Selenium 检测到条件返回为真,它将停止等待。您可以等待一些元素或文本出现或者不出现。JavaScript 可以运行在由 Selenium.browser.getCurrentWindow() 函数弹出的应用程序窗口中。清单 2 是检查窗口状态的样例代码。它只工作在 Firefox 中。清单 2. 等待窗口就绪的状态String script = var m

5、y_window = selenium.browserbot.getCurrentWindow(); script += var bool; script += var readyState = (my_window.document.readyState);script += if (readyState = complete);script += bool = true;script += ;script += bool;selenium.waitForCondition(script, timeoutInMilliseconds);如何支持 dojo 应用程序Dojo 是一个常用的 Ja

6、vaScript 工具包,用于构造动态 web 界面。使用 Selenium 测试 Dojo 应用程序时的一个关键点是认识 Dojo 小部件和记录它们的操作。作者定义的 Dojo 小部件处于抽象级别。页面运行时,会将 Dojo 小部件转换成基本的 HTML 代码。存在很多由 Dojo 自动生成的 HTML 代码,因此,Dojo 小部件的认识可能与传统 HTML 小部件有些不同。Dojo 小部件上执行的操作(包括文本字段、按钮复选框和单选按钮)可能与 HTML 小部件相同。但是,Dojo 在组合框上提供的日期选择器和其他额外的小部件可能需要特定的处理。图 1. Dojo 组合框使用 Seleni

7、um IDE 来记录图 1 中提供的组合框上选中的操作。单击向下箭头,会出现一个下拉列表。选中第三项 Stack(SWG)。记录的脚本提供在图 2 中。图 2. Selenium IDE 记录的脚本有时,只会由 IDE 生成第二行脚本。在这种情况下,添加单击箭头按钮的操作。对于上面的脚本,如果第一行被重新播放,那么它应该生成下拉列表。但是它不执行任何操作。对于多个 Dojo 小部件,单击并不真正执行单击操作。将 click(locator) 更改为 clickAt(locator, coordString) 或者 MouseDown(locator) 和 MouseUp(locator)。对于

8、下拉列表,等待时间应该相加。像图 2 中展示的脚本一样,选中项的单击操作将会刚好在单击向下箭头按钮之后执行。它可能会因为下拉列表没有出现而失败。简单地添加一个 pause 命令,或者使用 waitFor 命令等待菜单项元素出现,并继续执行下一个命令。修改后的将会自动化 Dojo 组合框上的选择的脚本展示在图 3 中。图 3. 修改后的在 Dojo 组合框中进行选择的 IDE 脚本RC 代码展示在清单 3 中。清单 3. 自动化 Dojo 组合框中选择操作的 RC 代码 selenium.clickAt(/divid=widget_offeringType/div/div,”);selenium

9、.waitForCondition(selenium.isElementPresent(offeringType_popup2), 2000);selenium.clickAt(offeringType_popup2,”);图 4. 日期选择器对于图 4 中的日期选择器例子,执行的操作可能不会被 IDE 记录。编写如下面清单 4 所示的 RC 代码。清单 4. 自动化选择的 RC 代码 /click on the date field by id you defined;selenium.clickAt(dateBox,); /wait for the drop down date box b

10、y id;selenium.waitForCondition(selenium.isElementPresent(widget_dateBox_dropdown), 2000); /click previous year 2008;selenium.clickAt(/spancontains(class,dijitCalendarPreviousYear), );/click on the month increase; /previous month would contains dijitCalendarIncrease.selenium.clickAt(/imgcontains(clas

11、s,dijitCalendarIncrease),);/click on the date such as 28 of current month; If you do not specify /the td with the attribute of current month class, it will click on the /first 28 of previous month;selenium.click(/tdcontains(class,dijitCalendarCurrentMonth)/spantext()=28);如本例所示,Dojo 应用程序不能通过简单的 IDE 记

12、录进行测试。这些脚本有可能不能通过测试。脚本中有一些丢失的操作,或者操作并不真正工作。脚本应该调整成能够在 IDE 和 RC 中顺利地执行。对于复杂的 Dojo 小部件,一种可能的解决方案是使用 runScript(String) 函数,因为 Selenium 对 JavaScript 提供很好的支持。清单 5 提供一个 JavaScript 语句来模拟组合框选择。清单 5. 运行 JavaScript 语句在组合框上进行选择selenium.runScript(dijit.byId(offeringType).setValue(Stack(SWG);); 如何利用 Ant 构建 Seleni

13、um 测试诸如 Ant 这样的集成工具可以方便地构建 Selenium 测试和顺畅地运行测试用例,无需单独启动 Selenium 服务器。如果 Selenium 测试由 TestNG 驱动,那么定义清单 6 所示 TestNG Ant 任务。清单 6 中假设 classpath 是 TestNG.jar 文件的文件路径。清单 6. TestNG Ant 任务 主要的目标是启动服务器、运行测试,然后停止服务器。这些任务按照 bulid.xml 中定义的顺序实现在清单 7 中。清单 7. 启动服务器、运行测试用例并停止服务器的 Ant 任务 代码更可取的地方是使用 waitfor 任务来测试 Se

14、lenium 服务器是否已成功启动,而不是暂停一段固定的时间。如果 URL http:/localhost:4444/selenium-server/driver/?cmd=testComplete 可用,就意味着 Selenium 已经成功启动。在清单 7 中,它最多等待两分钟,并且每 100 毫秒在本地主机上检查一次 Selenium 服务器,以提供完整的 URL。start-server 任务的详细内容定义在清单 8 中。Firefox profile 模板位置和其他参数可以指定在标记 中。清单 8. 详细的启动服务器的 Ant 任务 runTestNG 任务的详细内容定义在清单 9 中

15、。testng 任务的常用属性包括 outputDir 和 xmlfileset。属性 outputDir 用于设置输出报告位置。属性 xmlfileset 用于包含启动 XML 文件。更多选项请参考 TestNG 正式网站。清单 9. 运行测试用例的 Ant 任务 stop-server 任务的详细内容定义在清单 10 中。清单 10. 停止 Selenium 服务器的 Ant 任务 上面列出了关键任务。将它们组合到您的构建文件,以便利用 Ant 完成良好集成的测试。如何支持测试 HTTPS 网站随着互联网日益强调信息安全,越来越多的 web 应用程序在使用 SSL 身份认证。Seleniu

16、m IDE 默认支持 HTTPS,但是 Selenium RC 不是这样的。Internet Explorer 和 Firefox 中的解决方案各不相同。对于 IE,在 setup 目录下的 SSL 支持文件夹中在安装一个证书。如果使用的版本早于 Selenium-RC 1.0 beta 2,请使用 *iehta 运行模式,对于 Selenium-RC 1.0 beta 2 或更晚的版本,使用 *iexplore 运行模式。如果测试 HTTPS 网站时出现一个如下所示的安全警告,那么单击 View Certificate 并安装 HTTPS 网站的证书。如果继续弹出警告,那么考虑在 IE 中进

17、行配置。打开 Tool Internet Options Advanced,并取消选择 security 分类下的 Warn about invalid site certificates 和 Check for publishers certificate revocation。图 5. 测试 HTTPS 网站时的安全警告创建新的 Firefox 配置文件对于 Firefox,遵循以下步骤创建定制的配置文件,然后重启服务器:1. 关闭任何正在运行的 Firefox 实例。 2. 利用配置文件管理器 firefox -ProfileManager 启动 Firefox。 3. 创建一个新的配置

18、文件。出现提示时,为配置文件选择一个目录。将它放在项目文件夹里面。 4. 选择配置文件并运行 Firefox。 5. 利用您将用于测试的自签名证书导航到 HTTPS URL。出现提示时接受证书。这将在配置文件中创建一个异常。 6. 关闭浏览器。 7. 转到 Firefox 配置文件目录。 8. 删除该目录中除 cert_override.txt 和 cert8.db 文件之外的任何东西。 默认情况下,Selenium 将在启动 Firefox 的实例时创建一个新的配置文件。当您利用参数 -firefoxProfileTemplate /path/to/profile/dir 启动服务器时,Se

19、lenium 将使用一个部分配置文件(带有证书异常)作为创建新配置文件的基础。这将提供证书异常,而避免了使用整个配置文件带来额外的混乱。注意一下在 Selenium RC 1.0 Beta 2 或更晚版本中以 *firefox 模式,以及在 Selenium RC 1.0 Beta 2 之前的版本中以 *chrome 模式启动 Firefox。对于运行模式,*chrome 或 *iehta 是较早版本 Selenium RC 中支持 HTTPS 和安全弹出处理的实验模式。自 Selenium-RC 1.0 beta 2 起,它们已经稳定成 *firefox 和 *iexplore 运行模式。请

20、谨慎地根据所使用的 Selenium 版本而使用运行模式。如何高效地认识不带 ID 属性的 web 元素使用一个有含义的 ID 或名称是一种高效且方便的定位元素的方式。它也可以改善测试用例的可读性。但是为了每个元素具有一个有含义的、惟一的 ID(尤其是动态元素),Selenium 提供多种策略来认识元素,比如说 Xpath、DOM 和 CSS。下面是一个样例,使用三种策略来定位图 6 中提供的动态表格中的一个元素。HTML 代码在清单 11 中。图 6. 动态表格样例清单 11. 第一个表格列的 HTML 代码 Test 1 edit .Xpath 是一种找到不带特定 ID 或名称的元素的简单

21、方式。 如果知道 ID 或名称之外的一个属性,那么直接使用 attribute=value 定位元素。 如果只知道属性值的一些特定部分,那么使用 contains(attribute, value) 定位元素。 如果元素没有指定的属性,那么利用 Firebug 搜索最近的具有指定属性的父元素,然后使用 Xpath 从这个元素开始定位想要找到的那个元素。 表 1. 定位元素的 Xpath 表达式定位元素Xpath 表达式n 行的第一列/tableid=test_table/trn/tdn 行的图像/tableid=test_table/trn/imgTest 1 的编辑链接/acontains(

22、href,test1)表 1 展示了定位元素的 Xpath 表达式。在 Firebug 的帮助下,Xpath 可以定位元素和复制的元素。在元素没有 ID 和名称时,Selenium IDE 将会采用 Xpath。尽管 Xpath 利用已经录的脚本,有助于保持一致性,但是它高度依赖于 web 页面的结构。这使得测试用例可读性差,增加了维护难度。此外,在 Internet Explorer 7 和 Internet Explorer 8 中运行具有多个复杂 Xpath 表达式的测试用例可能会太慢了。在这种情况下,将 Xpath 更换为 DOM,后者是另一种高效的定位策略。DOM 是 Documen

23、t Object Model(文档对象模型)的缩写。Selenium 允许您利用 JavaScript 遍历 HTML DOM。Java 的灵活性允许在 DOM 表达式中有多个语句,用分号隔开,以及在语句中定义函数。表 2. 定位元素的 DOM 表达式定位元素DOM 表达式n 行的第一列dom=document.getElementById(test_table).rowsn-1.cells0n 行的图像dom=element=document.getElementById(test_table).rowsn-1.cells1; element.getElementsByTagName(IMG

24、)0 Test 1 的编辑链接dom=function test()var array=document.getElementsByTagName(a);var element;for(var i=0; i td:nth-child(2) table td:nth-child(1) div imgTest 1 的编辑链接css=ahref*=test2一般来说,选用熟悉的定位器表达式,并在脚本结构中保持一致。如果有多种表达式可执行,那么使用最高效的方式在 web 页面中定位元素。如何处理弹出窗口一般来说,操作都是在由 Selenium 启动的主窗口中执行。如果您想在一个由 window.open 函数生成的新窗口中执行操作,那么将焦点更换到新窗口。在弹出窗口中执行操

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1