当前位置: 首页 > 知识库问答 >
问题:

在Groovy的katalon studio中使用selenium wait,直到

伏业
2023-03-14

所以我一直试图实现从硒到katalon groovy脚本的等待功能,我一直得到以下行的错误

   WebUI.wait.Until(FindElement(By.XPath("//*[contains(text(), 'Fund Metrics Trend']")), 10)

这里是我的代码,如果有人能告诉我为什么我得到以下错误:

原因:[0;39m[31mgroovy.lang.Missing属性异常:没有这样的属性:等待类:com.kms.katalon.core.webui.keyword.WebUiBuiltIn关键字[0;39m[31m在选项卡Permissions.run(选项卡权限: 54)[0;39m[31mcom.kms.katalon.core.main.脚本ngine.run(脚本ngine.java:194)[0;39m[31mcom.kms.katalon.core.main.ScriptEngine.runScriptAsRawText(ScriptEngine.java:119)[0;39m[31mcom.kms.katalon.core.main.TestCaseExecutor.runScript(TestCaseExecutor.java:321)[0;39m[31mcom.kms.katalon.core.main.TestCaseExecutor.do执行(TestCaseExecutor.java:312)[0;39m[31mcom.kms.katalon.core.main.TestCaseExecutor.process执行阶段(TestCaseExecutor.java:291)[0;39m[31mcom.kms.katalon.core.main.TestCaseExecutor.access主阶段(TestCaseExecutor. java: 283)[0;39m[31m在com. kms. katalon. core. main. TestCaseExecutor.执行(TestCaseExecutor. java: 222)[0;39m[31m在com. kms. katalon. core. main.TestCaseMain. runTestCase(TestCaseMain. java: 106)[0;39m[31m在com. kms. katalon. core. main. TestCaseMain. runTestCase(TestCaseMain. java: 97)[0;39m[31m在com. kms. katalon. core. main. TestCaseMain$runTestCase$0. call(未知来源)[0;39m[31m在TempTestCase1545063637352. run(TempTestCase1545063637352. groovy: 22)[0;39m2018-12-17 11:21:19.430[1; 31mERROR[0;39m[36mc. k. katalon. core. main. TestCaseExecutor-[0;39m[31m测试用例/选项卡权限失败。[0;39m[31mReason:[0;39m[31mgroovy. lang.TestCaseExecutor. Access Main(TestCaseExecutor. java: 283)[0;39m[31m在com. kms. katalon. core. main。TestCaseExecutor.执行(TestCaseExecutor. java: 222)[0;39m[31m在com. kms. katalon. core. main。TestCaseMain. runTestCase(TestCaseMain. java: 106)[0;39m[31m在com. kms. katalon. core. main。TestCaseMain. runTestCase(TestCaseMain. java: 97)[0;39m[31m在com. kms. katalon. core. main。TestCaseMain$runTestCase$0. call(未知来源)[0;39m[31m在TempTestCase1545063637352. run(TempTestCase1545063637352. groovy: 22)[0;39m2018-12-17[0;39m[39mEND测试用例/选项卡权限

   import static com.kms.katalon.core.checkpoint.CheckpointFactory.findCheckpoint
   import static com.kms.katalon.core.testcase.TestCaseFactory.findTestCase
   import static com.kms.katalon.core.testdata.TestDataFactory.findTestData
   import static com.kms.katalon.core.testobject.ObjectRepository.findTestObject
   import com.kms.katalon.core.checkpoint.Checkpoint as Checkpoint
   import com.kms.katalon.core.cucumber.keyword.CucumberBuiltinKeywords as CucumberKW
   import com.kms.katalon.core.mobile.keyword.MobileBuiltInKeywords as Mobile
   import com.kms.katalon.core.model.FailureHandling as FailureHandling
   import com.kms.katalon.core.testcase.TestCase as TestCase
   import com.kms.katalon.core.testdata.TestData as TestData
   import com.kms.katalon.core.testobject.TestObject as TestObject
   import com.kms.katalon.core.webservice.keyword.WSBuiltInKeywords as WS
   import internal.GlobalVariable as GlobalVariable

   import org.openqa.selenium.WebDriver
   import org.openqa.selenium.chrome.ChromeDriver
   import org.openqa.selenium.support.ui.WebDriverWait
   import com.kms.katalon.core.webui.driver.DriverFactory
   import com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords as WebUI

   //set Web UI delay between actions to 2 seconds Project, Settings, Execution, Default, Web UI

   TestData data = findTestData('Investor/Notes')
   //TestData data = findTestData('temp')

   WebUI.openBrowser('')
   WebDriver driver = DriverFactory.getWebDriver()



   WebUI.navigateToUrl(GlobalVariable.url)
   WebUI.maximizeWindow()


   WebDriverWait wait = new WebDriverWait(driver, long time=10)

   for (def index : (0..data.getRowNumbers() - 1)) {

    WebUI.setText(findTestObject('Login/Screen Elements/input_username'),               data.internallyGetValue('username', index))
       WebUI.setText(findTestObject('Login/Screen Elements/input_password'), data.internallyGetValue('password', index))
WebUI.click(findTestObject('Login/Screen Elements/button_Login'))
if ((data.internallyGetValue('username', index) == 'jasmine') || (data.internallyGetValue('username', index) == 'pefadmin4') || (data.internallyGetValue('username', index) == 'pefreviewer4') || (data.internallyGetValue('username', index) == 'pefreadonly4') || (data.internallyGetValue('username', index) == 'fundaccounting4'))  {
    WebUI.click(findTestObject('Client/a_DFW Capital Partners'))
    WebUI.click(findTestObject('Object Repository/Fund/a_DFW Capital Partners V L.P.'))
    WebUI.verifyElementPresent(findTestObject('Object Repository/Tabs Permissions/a_Dashboard'), 10)
    WebUI.delay(3)
    WebUI.wait.Until(FindElement(By.XPath("//*[contains(text(), 'Fund Metrics Trend']")), 10)
    WebUI.delay(3)
    WebUI.verifyTextPresent("Fund Metrics Trend", false)

另外,这只是我代码的上半部分,其他一切都很好。

共有2个答案

太叔灿
2023-03-14

您收到了错误消息,因为“等待”在WebUI类中不可用。在Katalon Studio中使用等待的一个例子是:

WebUI.waitForElementPresent(findTestObject('findTestObject('Login/Screen Elements/input_username''), 
        0)
宋建柏
2023-03-14

在Katalon Studio中,您可以替换此行

WebUI.wait.Until(FindElement(By.XPath("//*[contains(text(), 'Fund Metrics Trend']")), 10)

通过以下步骤(将创建测试对象,然后执行等待):

TestObject fundMetricsTrend = new TestObject().addProperties("xpath", ConditionType.EQUALS, "//*[contains(text(), 'Fund Metrics Trend']") //this is the test object definition
WebUI.waitForElementPresent(fundMetricsTrend, 10)

注:

你需要进口这些

import com.kms.katalon.core.testobject.TestObject as TestObject
import com.kms.katalon.core.testobject.ConditionType

此外,您还可以尝试各种WebUI。waitFor___________________。

 类似资料:
  • 本文向大家介绍groovy 在Java项目上使用Groovy,包括了groovy 在Java项目上使用Groovy的使用技巧和注意事项,需要的朋友参考一下 示例 Groovy可以访问所有Java类,实际上Groovy类是Java类,可以直接由JVM运行。如果您正在从事Java项目,那么使用Groovy作为一种简单的脚本语言来与Java代码进行交互就变得很容易了。 为了使事情变得更好,几乎所有Jav

  • 我正在开发一个RCP应用程序,它使用Groovy作为脚本语言。我包含了Groovy Eclipse插件,让应用程序的用户使用Groovy编辑器在应用程序中编写Groovy代码。 Groovy脚本必须使用应用程序中的一些Java类,我如何在Groovy编辑器中为这些类添加可见性,以尽可能透明地为用户提供代码完成等功能。 要执行Groovy脚本,我使用GroovyShell,并将一个属性添加到传递给G

  • 问题内容: 我正在尝试从build.gradle文件中运行Groovy类。我遵循使用指南中的指示,但是出现错误。 构建文件为: 常规类很简单: 但是,当我尝试运行gradlew编译fooTask时,出现以下错误: 无法解析类groovyClass 知道为什么吗? 谢谢 问题答案: 如果要从构建中引用它,则需要添加该类(而不是在简单的Exec任务中)。给定此目录结构: 在哪里: 并且是: 然后,运行

  • 问题内容: 在这里,我将标签’snap2’作为输入,并且需要获取其子级标签(snap3,sddsds)作为输出。如何在Groovy中做到这一点?我搜索了很多东西,但找不到解决方案。 如果我能从你们中得到任何建议,那就太好了。 问题答案: 假设您的json在String中,则可以执行以下操作:

  • 我正在尝试在我的Jenkins管道中使用groovy-postbuild-plugin,我可以让它显示纯文本,但我不能使用它的参数。 所以这是有效的: 但是这个没有: 这是我得到的错误:

  • 我希望这对于“批准”和“阿普罗达”都是真的,但这不起作用: 谢谢