katalon等待时间、断言、setup teardown
设置等待时间
- 硬等待: 不管结果真么样等待时间一过立马执行以后代码
// 线程休眠5秒
Thread.sleep(5000)
- 每条语句等待: 每一个WebUI.方法都等待一段时间,这就要手动设置一下了。
路径 project → settings → Execution → Web Ui → delay Between actions……
单位是秒钟,默认:0,设置了之后,每条语句都会隔几秒在执行!
- 隐式等待: 有条件性的等待比如等待页面加载10秒钟,5 秒钟页面加载完成,开始执行下面代码,10 秒之后页面还是没有加载完成也执行后面代码!
WebUI 先说一下 webUi这个对象里面的方法的共同的一个特点。详细的都有什么第四章再介绍。下面的介绍的都是不带FailureHandling参数的方法。
// WebUI 的函数中每个方法都有一个重写的方法FailureHandling 失败之后测处理方式,默认终止当前Case。
// WebUI.waitForAlert(int timeOut, FailureHandling flowControl)
// WebUI.waitForAlert(int timeOut)
WebUI.waitForAlert(5000 , FailureHandling.STOP_ON_FAILURE)
WebUI.waitForAlert(5000)
说道重点了↓ 这可是一大片的代码,做好心理准备。
WebUI.openBrowser(null)// 等待警报出现
WebUI.waitForAlert(5000)//等待Angular/ajax在第二个单元中的给定时间内加载。
WebUI.waitForAngularLoad(5000)// 等待,直到给定的web元素具有特定名称和值的属性。
WebUI.waitForElementAttributeValue(TestObject to, String attributeName, String attributeValue, int timeOut)//等待给定的元素在给定的时间内单击(以秒为单位)。
WebUI.waitForElementClickable(TestObject to, int timeOut)//等待,直到给定的web元素具有特定名称的属性。
WebUI.waitForElementHasAttribute(TestObject to, String attributeName, int timeOut)//等待给定的元素在给定的时间内不可单击(以秒为单位)。
WebUI.waitForElementNotClickable(TestObject to, int timeOut)// 等待,直到给定的web元素没有具有特定名称的属性
WebUI.waitForElementNotHasAttribute(TestObject to, String attributeName, int timeOut)// 等待给定的元素在第二个单元中的给定时间内不出现(消失)。
WebUI.waitForElementNotPresent(TestObject to, int timeOut)//等待,直到给定的web元素在超时时间内不可见。
WebUI.waitForElementNotVisible(TestObject to, int timeOut)//等待给定的元素在给定的时间内出现在第二个单元中。
WebUI.waitForElementPresent(TestObject to, int timeOut)//等待,直到给定的web元素在超时内可见。
WebUI.waitForElementVisible(TestObject to, int timeOut)//等待图像出现在页面上
WebUI.waitForImagePresent(TestObject to, int timeOutInSeconds)// 等待jQuery在第二个单元中的给定时间内加载。
WebUI.waitForJQueryLoad(int seconds)// 等待网页在第二个单元中的给定时间内加载。
WebUI.waitForPageLoad(int seconds)WebUI.closeBrowser()
断言
断言就简单了,就一个关键字,assert
// assert 需要一个条件表达式 ,返回结果是True 或者 False
// 断言通过
assert 1 == 1// 断言失败
assert 1 != 1// 断言通过
assert true// 断言失败
assert false
还有其他验证方法,等我研究明白了在补充!
先给你网址:https://docs.katalon.com/katalon-studio/docs/verification-snippets.html#list-of-available-verification-snippets 我是通过这个网址研究的!
调试脚本
录制完脚本后一运行,之后报错!
在调试前先给代码打上断点。在没行代码的行首双击就可以了!
使用调试功能对脚本进行调试,按F6方代码一步一步执行,看代码执行到哪里为什么报错!
第一次调试会有一个提示窗口,让你进入调试界面。(我忘了截图了)
也可以通过下图方块位置 来回切换 编码视图和调试视图
你们写的代码你们去调试吧,我的问题是,录制脚本的时候,多个图片保存成一个对象了,因为对象操作不对所以才出问题!
就是这里,这里应该点击订票按钮,结果点击了退出按钮!
踩坑了!!! TMD 这个气人,我感觉我应该找个没有frame的网站做测试了!这个真心难受!
第三个 freme 框架读对象需要自己定义,这要是真的测试要多久才行!
用例前置函数与后置函数
在Test Case 中写的函数
每一个前置函数都有一个参数skipped 默认是跳过的,需要手动修改成 false 让他不跳过。
不多说,直接看代码!
import com.kms.katalon.core.annotation.SetUp
import com.kms.katalon.core.annotation.TearDown
import com.kms.katalon.core.annotation.TearDownIfError
import com.kms.katalon.core.annotation.TearDownIfFailed
import com.kms.katalon.core.annotation.TearDownIfPassed
import com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords as WebUI// 当次用例执行前执行的函数
@SetUp(skipped = false)
void setup(){WebUI.openBrowser('')this.println("@SetUp run")
}// 随便录制的一个用例
WebUI.navigateToUrl('http://127.0.0.1:1080/WebTours/')
WebUI.setText(findTestObject('Object Repository/Page_Web Tours/input_Username_username'), 'jack')
WebUI.setEncryptedText(findTestObject('Object Repository/Page_Web Tours/input_Password_password (1)'), 'HeCM15nHKBI=')
WebUI.click(findTestObject('Object Repository/Page_Web Tours/input_Password_login'))
def String welComeUserName = WebUI.getText(findTestObject('Object Repository/Page_Web Tours/b_jack'))
assert welComeUserName.contains('jack')// 当次用例执行后结果为失败执行的函数
@TearDownIfFailed(skipped = false)
void TearDownIfFailed(){this.println("@TearDownIfFailed run")
}
// 当次用例执行后结果为错误执行的函数
@TearDownIfError(skipped = false)
void TearDownIfError(){this.println("@TearDownIfError run")
}
// 当次用例执行后结果为通过执行的函数
@TearDownIfPassed(skipped = false)
void TearDownIfPassed(){this.println("@TearDownIfPassed run")
}
// 当次用例执行后不管结果执行的函数
@TearDown(skipped = false)
void TearDown(){WebUI.closeBrowser()this.println("@TearDown run")
}
在Test Suites 中写的函数
/*** test suite 执行前执行的函数*/
@SetUp(skipped = false) // Please change skipped to be false to activate this method.
def setUp() {this.println("suite in @@SetUp run")
}/*** test suites 执行后执行的函数*/
@TearDown(skipped = false) // Please change skipped to be false to activate this method.
def tearDown() {this.println("suite in @@TearDown run")
}/*** 运行每个 test case前执行的函数*/
@SetupTestCase(skipped = false) // Please change skipped to be false to activate this method.
def setupTestCase() {this.println("suite in @@SetupTestCase run")
}/*** 每个 test case运行后执行的函数*/
@TearDownTestCase(skipped = false) // Please change skipped to be false to activate this method.
def tearDownTestCase() {this.println("suite in @@TearDownTestCase run")
}
执行结果:
黄色线是 在 test Case 中写的函数
红色线是 在 test Suites 中写的函数
转载https://blog.csdn.net/weixin_43664254/article/details/89491130
katalon等待时间、断言、setup teardown相关推荐
- 第六:Pytest中的setup/teardown
简介 学过unittest的都知道里面用前置和后置setup和teardown非常好用,在每次用例开始前和结束后都去执行一次. 当然还有更高级一点的setupClass和teardownClass,需 ...
- Pytest setup teardown
目录 如何实现xunit样式setup\teardown 模块级setup/teardown 类级别setup/teardown 方法和功能级别setup/teardown 如何实现xunit样式se ...
- Pytest测试框架(二):pytest 的setup/teardown方法
系列文章目录 Pytest测试框架(一):pytest安装及用例执行 Pytest测试框架(二):pytest 的setup/teardown方法 Pytest测试框架(三):pytest fixtu ...
- 三、pytest接口自动化之pytest中setup/teardown,setup_class/teardown_class讲解
pytest框架实现的前后置的处理(固件,夹具),很多种方式,常见的三种. 一.setup/teardown,setup_class/teardown_class 为什么需要这些功能? Class T ...
- gtest 中Setup TearDown SetUpTestCase和TearDownTestCase 的区别
前言 在单元测试中,我们经常需要在某个测试套件.测试用例或者整个测试运行之前进行前置条件设置及检查,或者运行之后对运行结果进行校验等操作.在gtest中,称之为事件机制.gtest将事件按照作用的范围 ...
- setup/teardown 的用法
# 方法级别函数 setup_method/teardown_method和setup/teardown对类有效,也位于类中,这两个效果一样,在测试类中每个测试方法前后调用一次.# 每条用例都要执行一 ...
- setup/teardown用法汇总
pytest中的前置 pytest比较强大,提供了不仅仅一种方法的前置和后置: setup.teardown 先介绍第一个大家都比较熟悉的与unittest中的书写一直,这个可以在类中使用,也可以在类 ...
- locust之setup/teardown
1. 单用户测试的setup和teardown行为,分别通过taskset类里面的on_start()和on_stop()方法实现. on_start():在用户建立前执行,初始化用户相关配置. on ...
- pytest——03 setup和teardown
目录 前言 用例运行级别 函数式 setup_function/teardown_function setup_module/teardown_module 类和方法 函数和类混合 后置固件yield ...
最新文章
- 校验正确获取对象或者数组的属性方法(babel-plugin-idx/_.get)
- iOS开发-UIColor转UIIamge方法
- kubernetes常用对象
- hadoop启动碰到java.net.UnknownHostException
- Swift - 重写导航栏返回按钮
- 在linux中加固mysql_mysql在linux下的安装
- pdf转word python_Python实现PDF转Word
- HyperV2012的学习,从这里开始
- Linux学习体会。
- python程序员月薪-据说做Python程序员,都月薪上万?
- 全球各地区当前对电子烟行业的政策如何?
- (客户端)发送请求====>(到服务器端) 过程分析
- 微信开发者工具最新版本无法上传腾讯云代码(找不到腾讯云图标)
- 查看GitHub仓库大小的几种方法
- 尚硅谷周阳学习微服务《二》
- 【转载】十款必备牛逼的IDEA插件
- 最新上海个人养老保险缴费信息查询步骤
- ROS从入门到精通5-5:局部路径规划插件开发案例(以DWA算法为例)
- 什么是BFC,他有什么用?
- CSDN第11期周赛