已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Selenium IDE工具总结基本介绍:Selenium工具专门为WEB应用程序编写的一个验收测试工具。Selenium的核心:browser bot,是用JAVASCRIPT编写的。Selenium工具有4种:Selenium IDE, Selenium Control, Selenium Core这儿我们主要总结了Selenium-IDE工具Selenium-IDE只限于firefox浏览器中使用。Selenium命令分成三类:操作(action)、辅助(accessors)和断言(assertion):操作action: 模拟用户与 Web 应用程序的交互。一般用于操作应用程序的状态。 如点击链接,选择选项的方式进行工作。如果一个动作执行失败,或是有错误,当前的测试将会停止执行。操作中常见命令有:open(打开页面)click(点击)clickAndWait(点击并等待) type(文本类型)select(选择下拉菜单)selectWindow(选择弹出窗口)pause(等待指定时间,以毫秒为单位,即要睡眠的时间)setSpeed(设定执行速度。以毫秒延迟间隔长度。默认没有延迟,即为0)setTimeout(指定等待动作完成的等待时间。默认为30秒。需要等待的动作包括了OPEN 和WAITFOR)goBack(模拟用户点击其浏览器上的“back”按钮)close(模拟用户点击弹出窗体或表单标题栏上的”关闭”按钮) click与clickAndWait的区别:例如对比录制脚本: Comand Target click css=inputtype=submit /句一 clickAndWait css=inputtype=submiit /句二转成PHPUNIT后代码为: $this-click(css=inputtype=submit); /此句对应上面的 句一$this-click(css=inputtype=submit); /此句和下一句,对应上面的 句二 $this-waitForPageToLoad(30000);区别在于:clickAndWait后会有一个默认的页面等待时间为30秒;而click没有等待时间; Andwait这个后缀,告诉我们,该命令将使浏览器向服务器产生一个请求,使 Selenium等待加载一个新的页面。辅助accessors:这是辅助工具。用于检查应用程序的状态并将结果存储到变量中。如:storeElementPresent(locator,variableName) 其中参数:locator 表示元素定位器;variableName 用于存储结果的变量名。即将locator定位到的状态存储到variableName变量中。如果该元素出现返回true,否则返回false可同断言一同使用。断言assertion:验证应用程序的状态是否同所期望的一致。常见的断言包括:验证页面内容,如标题是否为X或当前位置是否正确,或是验证该 复选框是否被勾选。断言被用于三种模式: assert 、verify、waitfor Assert 失败时,该测试将终止。 Verify 失败时,该测试将继续执行,并将错误记入日显示屏 。也就是说允许此单个 验证通过。确保应用程序在正确的页面上。 Waitfor用于等待某些条件变为真。可用于AJAX应用程序的测试。如果该条件为真,他们将立即成功执行。 如果该条件不为真,则将失败并暂停测试。直到超过当前所设定的超时时间。 一般跟setTimeout时间一起用断言常用的有:assertLocation(判断当前是在正确的页面)、assertTitle(检查当前页面的title是否正确)、assertValue(检查input的值, checkbox或radio,有值为”on”无为”off)、assertSelected(检查select的下拉菜单中选中是否正确)、assertSelectedOptions(检查下拉菜单中的选项的是否正确)、assertText(检查指定元素的文本)、assertTextPresent(检查在当前给用户显示的页面上是否有出现指定的文本)、assertTextNotPresent(检查在当前给用户显示的页面上是否没有出现指定的文本)、assertAttribute(检查当前指定元素的属性的值)、assertTable(检查table里的某个cell中的值)、assertEditable(检查指定的input是否可以编辑)、assertNotEditable(检查指定的input是否不可以编辑)、assertAlert(检查是否有产生带指定message的alert对话框)waitForElementPresent (等待检验某元素的存在。为真时,则执行。)具体实现中出现的问题:将录制的脚本转成PHPUNIT在服务器端运行总失败。开始要作如下工作:1. 在setUp()函数中添加语句:每次脚本运行,都将清空数据库的语句/home/www/selenium-php/yuezhan/rebuilddb.sh;注意:用倒斜杠,数字1左边的键/根据项目需要而修改; 2. 将默认的浏览器代码修改:将$this-setBrowser(*chrome);改成 $this-setBrowser(*firefox);可以不用修改代码的方法:Selenium工具OptionsOptions选择Formats选项卡选择PHP-PHPUNIT将Environment里的浏览器改成firefox即可,这样子录制的脚本转化成PHP后,也就不用修改此部分代码了。3. 在第2点的基础上,在上面添加两句代码: $this-setHost(4);$this-setPort(4445); /此句可以不加,根据自己服务器端口而定4. 录制的脚本中如有上传图片的路径。 也要根据服务器所在的环境作修改。如在同一环境下可不作修改。不在同一环境下,要将图片路径修改成服务器环境中图片所在的路径下。5. 录制的脚本一定要从登录开始录制。在没有解决COOIKE之前,必须这么做。运行脚本时,常见问题1:报错:ERROR: There was an unexpected Alert! ajax错误.错误原因:AJAX错误,没有找到ALERT提示的框架,因而报异常错误解决方法一:$this-click(css=inputtype=submit);这是一个“下一步”按钮。 进入的页面中,有AJAX。 可以此句前面添加:setSpeed(1000)让其执行速度变慢1秒。 具体php代码: $this-setSpeed(1000) /从下一句开始,执行速度放慢 $this-click(css=inputtype=submit); $this-waitForPageToLoad(30000); $this-type(name=playerplayer1name, 元一); $this-setSpeed(0) /恢复到正常执行速度根本的解决方法: $this-waitForCondition(selenium.browserbot.getUserWindow().jQuery.active = 0, 3000); /此处3000,即限定的超时时间timeout。 $this-click(css=inputtype=submit);解释waitForCondition用法:waitForCondition(JavaScriptSnippet,time)- 在限定时间内,等待一段JavaScript 代码返回true 值,超时则停止等待 其中selenium.browserbot.getUserWindow().jQuery.active = 0这是一段javascript语句, 意思:检查得到的窗体里AJAX的活动数量为0时,则为0即无AJAX活动了,则为真,为真就可以继续向下运行。 反之,在限定的timeout 3秒时间内,活动数仍不为0,则会报错。常见的框架:jQuery : “jQuery.active”Prototype: “Ajax.activeRequestCount”Dojo : “dojo.io.XMLHTTPTransport.inFlight.length我们用的是jQuery框架,即写成jQuery.actiive3000是限时3秒。不正确的解决方法: for ($second = 0; ; $second+) if ($second = 60) $this-fail(timeout); try if ($this-isElementPresent(css=inputtype=submit) break; catch (Exception $e) sleep(1); 此处用的方法:waitForElementPresent(locator,variableName)验证指定元素在页面上。此方法解决AJAX错误时无效。其检验元素的方法,可解决javascript的问题。常见问题4中会详解。常见问题2:服务器连接不上。解决方法:目前我们服务器上同时只能边接两台机器。所以,这儿的解决方法,只能限于两台哦。常见问题3:超时timeout错误原因:在服务器上跑,页面加载时间有时会变的慢解决方法一:页面加载时间修改一下。延长页面加载时间 原语句: $this-waitForPageToLoad(30000); 可更改为: $this-waitForPageToLoad(60000);解决方法二:将运行速度放慢,在页面加载时间前一句加如下语句$this-setSpeed(1000) /运行速度放慢当然,页面加载完之后,可以提交接钮语句之后,加如下语句,将运行速度恢复到正常。 $this-setSpeed(0) /恢复到正常执行速度常见问题4:登录时,没有发现某个元素。error Element id=username not found如,我们虎扑网站,当前状态为未登录。先点击进入论坛页面。然后点击“登录”,录制的脚本,在回放中,会错误。没有该元素。例如录制脚本: Comand Target Value open /click link=登录 type id=username admin type id=password admin clickAndWait link=退出转成PHPUNIT后代码为: $this-open(/); $this-click(link=登录); $this-type(id=username, admin); $this-type(id=password, admin); $this-click(link=退出);回放时,到了用户名那一句,就会报无法找到元素的错误。错误原因:登录时,会弹跳出一个登录对话框。此对话框即是Javascript语句写 的。解决方法:用waitForElementPresent 方法,其方法是检查页面上的元素是否存在。 登录之后的语句,都是JAVASCRIPT语句执行之后出现的。建议检验最后一个可输入元素。例如录制脚本: Comand Target Value open /click link=登录 waitForElementPresent id=password /此句为添加的辅助代码,检查元素 type id=username adminuser type id=password adminpwd clickAndWait link=退出转成PHPUNIT后代码为: $this-open(/); $this-click(link=登录); for ($second = 0; ; $second+) if ($second = 60) $this-fail(timeout); /超过60秒,则报超时错误 try if ($this-isElementPresent(id=password) break; /检查用户名这个元素 catch (Exception $e) sleep(1); $this-type(id=username, adminuser); $this-type(id=password, adminpwd); $this-click(link=退出);上述中selenium中的waitForElementPresent id=password 这一句,转化成PHPUNIT代码后,即是for循环代码那一段。在PHPUNIT中也可以直接添加该段代码。且完全可以将for循环代码这一段替换成: $this-waitForElementPresent(id=password); 这样单独的一句。完全可以只写这一句,也可以达到检查这个元素的效果。解释waitForElementPresent用法:waitForElementPresent(locator) 等待指定元素出现在页面上。常见问题5:录制时必须从登录开始录制,那么有没有什么办法可以解决呢。解决方法:如下PHPUNIT代码: setHost(4); $this-setPort(4445); $this-setBrowser(*firefox); $this-setBrowserUrl(http:/kangying.yuezhanerqi.test.hc.sf/); public function testLogin() /这个类就是测试登录。 $this-open(backend_test.php/om_match); /打开后台URL $this-type(name=backend_userusername, 康莹); $this-type(name=backend_userpassword, kangying); $this-click(css=input.button); $this-waitForPageToLoad(30000); self:$YZLoginCookie = $this-getCookieByName(symfony); /下面详细解释。 public function testOmMatch() /这个类就是测试约战二期的。 $this-open(backend_test.php/om_match); /要注意这儿要先打开约战二期的URL $this-createCookie(symfony=.self:$YZLoginCookie, path=/); /下面详细解释 $this-open(backend_test.php/om_match); /注意,创建完COOKIE要再打开下URL 解释下面两句:1. self:$YZLoginCookie = $this-getCookieByName(symfony); Symfony这个参数是SESSION名。getCookieByName 这是一个取得Cookie值的方法。并将取的到值放到YZLoginCookie变量中。因为YZLoginCookie变量是私有的。在PHPUNIT中,私有变量的引用就这么写:self:$变量名这个我们不要太懂。就记住,定义变量时用的是private,那么用这个变量时,前面加 Self:(注意:这儿的两个冒号,必须是半角状态下的冒号)就可以了。2. $this-createCookie(symfony=.self:$YZLoginCookie, path=/); createCookie() 这个就是创建Cookie的方法 它的参数是刚刚self:$YZLoginCookie变量中的值。将其创建好的Cookie存放到path=/ 这个路径下常见问题6: 运行PHPUNIT代码时报类似如下错: Failed asserting that is true.错误原因:此处错误存在于断言检查中。 检查出来返回的值是失败的。解决方法: 1. 检查断言语句是没有放错位置。应将语句放置要检查代码的上一行 2. 主要检查引号中里面的语句有无错误。比如:$this-waitForElementPresent(必须填写); 这里面与页面中有出入。应为 $this-waitForElementPresent(必需填写);再比如:$this-waitForElementPresent(css=inputtyp=button); 这里应该为: $this-waitForElementPresent(css=inputtype=button); 少了右边的中括号,还有type的e先看有没有少写了括号或中括号;再来检查单词有无编写错误。以及有无错别字的错误。常见问题7: 运行PHPUNIT代码时报类似如下错:Parse error: syntax error, unexpected T_IF in /home/www/selenium-php/zhaomu.php on line 44错误原因:第44行。提示有代码错误。解决方法: 检查第44行以及44附近的行。 先看有没有少写了分号;然后看编写或复制代码时,有无加了代码行的编号(即代码前的数字);最后检查单词有无编写错误。常见问题8:运行PHPUNIT代码时报类似如下错:PHPUnit_Framework_Exception: Response from Selenium RC server for testComplete().ERROR: There were no alerts.错误原因:PHPUNIT中框架异常出错。 它找的错误原因,没有Alert。这里alert是一个提示信息,一般出现在当前窗体中以弹层方式显示的确认对话框。解决方法:在确认对话框提示代码的上一行,添加一段等待审核提示信息即可。 方法一、可以直接在selenium中,在弹出提示框代码的上一行。例如录制脚本: Comand Target Value open /backend_test.php/om_matchclick link=招募 click css=inputtype=button waitForAlertPresent /此句添加断言,等待警告/提示框 assertAlert 请等待信息审核 保存,转成PHPUNIT后代码为: $this-open(/backend_test.php/om_match ); $this-click(link=招募); $this-click(css=inputtype=button); for ($second = 0; ; $second+) if ($second = 60) $this-fail(timeout); try if ($this-isAlertPresent() break; /检查Alert警告/提示框 catch (Exception $e) sleep(1); $this-assertEquals(请等待信息审核, $this-getAlert(); 上述中selenium中的waitForAlertPresent 这一句,转化成PHPUNIT代码后,即是for循环代码那一段。方法二、在PHPUNIT中也可以直接添加该段代码。且完全可以将for循环代码这一段替换成: $this- waitForAlertPresent ();这样单独的一句。完全可以只写这一句,也可以达到检查这个元素的效果。*注意:参数为空解释waitForAlertPresent用法:waitForAlertPresent ( ) 等待警告/提示出现。注意,参数为空如何在自动化测试中生成代码覆盖报告?解决方法:在PHPUNIT测代码中加入如下两个语句:protected $coverageScriptUrl = /phpunit_coverage.php;和$this-open(/phpunit_coverage.php?PHPUNIT_SELENIUM_TEST_ID=yz);将代码加哪到呢?如下例子:如我录制好代码,转换成phpunit代码。命名为liangle-ccov.php现在我们为liangle-ccov.php添加完测试代码之后为:setHost(4); $this-setPort(4445); $this-setBrowser(*firefox); $this-setBrowserUrl(/); public function testMyTestCase() /这个类测试 我的测试集 $this-open(/phpu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《离子液体用于苯-乙腈共沸物系的研究》
- 生物识别和密码结合使用考核试卷
- 2024至2030年中国野外过流防水型分支分配器数据监测研究报告
- 《金属氧化物-贵金属纳米酶基自验证型化学传感器的构建》
- 《养心汤干预不稳定型心绞痛患者的临床研究及代谢组学影响》
- 2024至2030年中国胶合板专用圆锯片数据监测研究报告
- 个人销售工作计划书
- 《市场经济背景下畲族文化现代性建构研究》
- 2024-2030年中国民办职业教育行业市场运营模式及未来发展动向预测报告
- 初等教育的教学领导与管理考核试卷
- 老旧小区改造临时用电专项方案
- 北京市政基础设施竣工“长城杯”汇报材料
- 小学英语-Unit 2 I want to go to Shanghai.教学设计学情分析教材分析课后反思
- 基于PLC的生产流水线控制系统设计毕业设计论文报告
- 中国古代文学史(全套)课件
- KTV对讲机的使用及规范用语
- 小学数学西南师大二年级上册六表内除法 分一分- PPT
- GB/T 28879-2022电工仪器仪表产品型号编制方法
- GA 1800.1-2021电力系统治安反恐防范要求第1部分:电网企业
- 企业如何利用新媒体做好宣传工作课件
- 中医药膳学全套课件
评论
0/150
提交评论