You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Katalon Studio报错:无法解析com.kms.katalon.core.testobject.FindTestObject类的解决求助

Katalon Studio报错:无法解析com.kms.katalon.core.testobject.FindTestObject类的解决求助

大家好,我是编程新手,最近写了一个Katalon爬虫脚本,想把Odoo平台的数据抓取下来写入Excel文件,但运行时一直卡在类解析错误上,试了各种办法都没解决,来求助各位大佬!

我的需求很明确:登录Odoo后,从页面表格逐行点击链接,抓取每个页面里的姓名和邮箱信息,最后把这些数据导出到本地Excel中。

以下是我的完整脚本代码:

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 static com.kms.katalon.core.testobject.ObjectRepository.findWindowsObject

import com.kms.katalon.core.testobject.FindTestObject as 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.testng.keyword.TestNGBuiltinKeywords as TestNGKW
import com.kms.katalon.core.testobject.TestObject as TestObject
import com.kms.katalon.core.webservice.keyword.WSBuiltInKeywords as WS
import com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords as WebUI
import com.kms.katalon.core.windows.keyword.WindowsBuiltinKeywords as Windows
import internal.GlobalVariable as GlobalVariable
import org.openqa.selenium.Keys as Keys
import java.util.Arrays as Arrays
import org.openqa.selenium.WebElement as WebElement
import com.kms.katalon.core.testobject.ConditionType as ConditionType
import com.kms.katalon.core.testobject.TestObject as TestObject
import com.kms.katalon.core.testobject.TestObjectProperty as TestObjectProperty
import org.openqa.selenium.By as By

@Grab(module = 'poi', version = '4.1.2', group = 'org.apache.poi')
import org.apache.poi.ss.usermodel.*
import org.apache.poi.xssf.usermodel.XSSFWorkbook as XSSFWorkbook

WebUI.openBrowser('')
WebUI.navigateToUrl('https://www.odoo.com/it_IT/web/login')
WebUI.setText(findTestObject('Object Repository/Page_Login  Odoo/input_E-mail_login'), 'EMAIL---')
WebUI.setEncryptedText(findTestObject('Object Repository/Page_Login  Odoo/input_Password_password'), 'PASS---')
WebUI.click(findTestObject('Object Repository/Page_Login  Odoo/button_Accedi'))

TestObject tableObject = findTestObject('/html/body/div[1]/main/div[1]/div/div[1]/table')
List<WebElement> righeTabella = WebUI.findWebElements(tableObject)

List<WebElement> arrayName = new ArrayList<String>()
List<WebElement> arrayEmail = new ArrayList<String>()

for (WebElement riga : righeTabella) { //ciclo per ogni riga della tabella
    WebElement link = riga.findElement(By.tagName('a')) //trova il collegamento <a> per ogni riga
    WebUI.click(link) //apre il collegamento della riga
    
    WebElement nameSpan = link.findElement(By.xpath('.//span[@itemprop=\'name\']')) //Ricerco il campo span 'name'
    String nameText = nameSpan.getText() //copio il campo span 'name'
    arrayName.add(nameText) //aggiungo ad arrayName il valore del nome appena copiato
    
    WebElement emailSpan = link.findElement(By.xpath('.//span[@itemprop=\'email\']')) //Ricerco il campo span 'email'
    String emailText = emailSpan.getText() //copio il campo span 'email'
    arrayEmail.add(emailText) //aggiungo ad arrayName il valore del email appena copiato
}

Workbook workbook = new XSSFWorkbook()
Sheet sheet = workbook.createSheet('Dati')

for (int i = 0; i < arrayName.size(); i++) {
    // Popolamento del file Excel con i dati dell'array
    String nameExcel = arrayName.get(i)
    Row row = sheet.createRow(i)
    Cell cell1 = row.createCell(0)
    cell1.setCellValue(nameExcel)
    
    String emailExcel = arrayEmail.get(i)
    Cell cell2 = row.createCell(1)
    cell2.setCellValue(emailExcel)
}

// Salvataggio del file Excel
FileOutputStream fileOut = new FileOutputStream('C:/Users/orien/OneDrive/Desktop/excel-lead-odoo.xlsx')
workbook.write(fileOut)
fileOut.close()
workbook.close()

WebUI.closeBrowser()

运行后弹出的错误信息如下:

Test Cases/Test 1 lead odoo FAILED.
Reason:
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
file:/C:/Users/orien/Katalon%20Studio/Odoo%20leads/Scripts/Test%201%20lead%20odoo/Script1687957429899.groovy: 8: unable to resolve class com.kms.katalon.core.testobject.FindTestObject
@ line 8, column 1.
   import com.kms.katalon.core.testobject.FindTestObject as FindTestObject
   ^
1 error

	at com.kms.katalon.core.main.ScriptEngine.getScript(ScriptEngine.java:199)
	at com.kms.katalon.core.main.ScriptEngine.run(ScriptEngine.java:194)
	at com.kms.katalon.core.main.ScriptEngine.runScriptAsRawText(ScriptEngine.java:119)
	at com.kms.katalon.core.main.TestCaseExecutor.runScript(TestCaseExecutor.java:448)
	at com.kms.katalon.core.main.TestCaseExecutor.doExecute(TestCaseExecutor.java:439)
	at com.kms.katalon.core.main.TestCaseExecutor.processExecutionPhase(TestCaseExecutor.java:418)
	at com.kms.katalon.core.main.TestCaseExecutor.accessMainPhase(TestCaseExecutor.java:410)
	at com.kms.katalon.core.main.TestCaseExecutor.execute(TestCaseExecutor.java:285)
	at com.kms.katalon.core.main.TestCaseMain.runTestCase(TestCaseMain.java:144)
	at com.kms.katalon.core.main.TestCaseMain.runTestCase(TestCaseMain.java:135)
	at com.kms.katalon.core.main.TestCaseMain$runTestCase$0.call(Unknown Source)
	at TempTestCase1689002556348.run(TempTestCase1689002556348.groovy:25)

我尝试过在build.gradle里手动导入这个类,但完全没效果,现在实在摸不着头绪,希望有经验的朋友能帮我看看问题出在哪,怎么解决这个报错!

备注:内容来源于stack exchange,提问作者davide

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 07:17:58