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

Katalon Studio中同一按钮对象二次点击失败(对象未找到)求助

问题:Katalon中第二次点击“Next Passenger”按钮提示对象未找到

我在做自动化测试时碰到个头疼的问题:页面上的「Next Passenger」按钮第一次点击能正常跳转加载新页面,但第二次点击就报错说找不到该按钮对象。下面是我的测试代码:

WebUI.selectOptionByValue(findTestObject('CreateBookingWithChildandInfant_Transit_OR/Page_Al-Maha Services/select_SelectAmbCol.CptDr.Duke'), '13', true) 
WebUI.setText(findTestObject('CreateBookingWithChildandInfant_Transit_OR/Page_Al-Maha Services/input_pax1_firstName'), 'n') 
WebUI.setText(findTestObject('CreateBookingWithChildandInfant_Transit_OR/Page_Al-Maha Services/input_pax1_lastName'), 'n') 
WebUI.selectOptionByValue(findTestObject('CreateBookingWithChildandInfant_Transit_OR/Page_Al-Maha Services/select_SelectFemaleMaleNA'), '1', true) 
WebUI.selectOptionByValue(findTestObject('CreateBookingWithChildandInfant_Transit_OR/Page_Al-Maha Services/select_SelectAfghanAlbanianAlg'), '15', true) 
WebUI.selectOptionByValue(findTestObject('CreateBookingWithChildandInfant_Transit_OR/Page_Al-Maha Services/select_Day'), '17', true) 
WebUI.selectOptionByValue(findTestObject('CreateBookingWithChildandInfant_Transit_OR/Page_Al-Maha Services/select_Month'), '09', true) 
WebUI.selectOptionByValue(findTestObject('CreateBookingWithChildandInfant_Transit_OR/Page_Al-Maha Services/select_Year2006200520042003200'), '19', true) 
WebUI.click(findTestObject('CreateBookingWithChildandInfant_Transit_OR/Page_Al-Maha Services/a_Next Passenger')) 
WebUI.delay(4) 
WebUI.selectOptionByValue(findTestObject('CreateBookingWithChildandInfant_Transit_OR/Page_Al-Maha Services (1)/select_SelectAmbCol.CptDr.Duke_1'), '16', true) 
WebUI.delay(4) 
WebUI.setText(findTestObject('CreateBookingWithChildandInfant_Transit_OR/Page_Al-Maha Services/input_chd1_firstName'), 'k') 
WebUI.setText(findTestObject('CreateBookingWithChildandInfant_Transit_OR/Page_Al-Maha Services/input_chd1_lastName'), 'k') 
WebUI.selectOptionByValue(findTestObject('CreateBookingWithChildandInfant_Transit_OR/Page_Al-Maha Services/select_SelectFemaleMaleNA_1'), '0', true) 
WebUI.selectOptionByValue(findTestObject('CreateBookingWithChildandInfant_Transit_OR/Page_Al-Maha Services/select_Day _1'), '15', true) 
WebUI.selectOptionByValue(findTestObject('CreateBookingWithChildandInfant_Transit_OR/Page_Al-Maha Services/select_Month _1'), '11', true) 
WebUI.selectOptionByValue(findTestObject('CreateBookingWithChildandInfant_Transit_OR/Page_Al-Maha Services/select_Year2016201520142013201'), '4', true) 
WebUI.selectOptionByValue(findTestObject('CreateBookingWithChildandInfant_Transit_OR/Page_Al-Maha Services/select_SelectAfghanAlbanianAlg_1'), '13', true) 
WebUI.delay(5) 
WebUI.click(findTestObject('CreateBookingWithChildandInfant_Transit_OR/Page_Al-Maha Services/a_Next Passenger')) 
WebUI.delay(5) 

可能的原因&解决方案

我帮你梳理几个常见的问题点和解决办法:

1. 测试对象的定位器依赖了动态页面信息

第一次点击按钮后页面跳转,新页面的结构或属性(比如页面标题、元素层级)可能变化了,但你还是用了和第一次完全一样的测试对象Page_Al-Maha Services/a_Next Passenger。

解决办法:

  • 打开Katalon的对象仓库,检查这个按钮的定位策略。尽量用稳定的、不随页面变化的属性来定位:比如按钮的文本Next Passenger,或者固定的class、id(如果有的话)。
  • 举个例子,把定位器改成基于文本的XPath://a[normalize-space(text())='Next Passenger'],这样不管页面标题怎么变,只要按钮文本没变就能找到。

2. 固定延迟不可靠

你用了WebUI.delay()来等待页面加载,但固定时间的等待很容易在不同环境下失效——比如测试环境加载慢,5秒还没加载完,元素自然找不到。

解决办法:

  • 替换固定延迟为显式等待,等待元素可点击后再执行点击:
    // 等待按钮可点击,超时时间设为10秒(可根据实际情况调整)
    WebUI.waitForElementClickable(findTestObject('CreateBookingWithChildandInfant_Transit_OR/Page_Al-Maha Services/a_Next Passenger'), 10)
    WebUI.click(findTestObject('CreateBookingWithChildandInfant_Transit_OR/Page_Al-Maha Services/a_Next Passenger'))
    
  • 也可以在Katalon项目设置里开启智能等待(Smart Wait),它会自动等待元素出现再执行操作,减少手动加延迟的麻烦。

3. 第二次点击的按钮对应新的测试对象

注意到你第二次操作的下拉框用了Page_Al-Maha Services (1)开头的对象,说明页面跳转后Katalon自动生成了新页面的对象。那第二次的按钮可能也需要用新页面下的对象,而不是原来的Page_Al-Maha Services/a_Next Passenger。

解决办法:

  • 重新录制第二次点击按钮的动作,让Katalon自动生成对应的测试对象(应该是类似Page_Al-Maha Services (1)/a_Next Passenger这样的路径),然后替换代码中第二次点击的对象路径。

内容的提问来源于stack exchange,提问作者Kasi Naidu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:33:28