katalon等待时间、断言、setup teardown

设置等待时间

  • 硬等待: 不管结果真么样等待时间一过立马执行以后代码
// 线程休眠5秒
Thread.sleep(5000)
  • 每条语句等待: 每一个WebUI.方法都等待一段时间,这就要手动设置一下了。
      路径 project → settings → Execution → Web Ui → delay Between actions……

katalon等待时间、断言、setup teardown
katalon等待时间、断言、setup teardown
  单位是秒钟,默认: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 我是通过这个网址研究的!

调试脚本

  录制完脚本后一运行,之后报错!

  在调试前先给代码打上断点。在没行代码的行首双击就可以了!
katalon等待时间、断言、setup teardown

  使用调试功能对脚本进行调试,按F6方代码一步一步执行,看代码执行到哪里为什么报错!
katalon等待时间、断言、setup teardown
  第一次调试会有一个提示窗口,让你进入调试界面。(我忘了截图了)

katalon等待时间、断言、setup teardown

  也可以通过下图方块位置 来回切换 编码视图和调试视图

katalon等待时间、断言、setup teardown

  你们写的代码你们去调试吧,我的问题是,录制脚本的时候,多个图片保存成一个对象了,因为对象操作不对所以才出问题!
  就是这里,这里应该点击订票按钮,结果点击了退出按钮!

katalon等待时间、断言、setup teardown

   踩坑了!!! 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 中写的函数
katalon等待时间、断言、setup teardown

转载https://blog.csdn.net/weixin_43664254/article/details/89491130

上一篇:03-pytest框架结构及调用顺序


下一篇:vue3中获取setup的返回值类型