当我点击按钮时(手动点击后,会打开新的弹出窗口),但在Katalon Studio中,当我点击时,它通过了,但没有任何反应,窗口不会打开)
代码试验:
WebUI.click(findTestObject('Object Repository/POkus3/Page_Dashboard - altFINS/vaadin-tab_Overview'))
WebUI.click(findTestObject('Object Repository/POkus3/Page_Dashboard - altFINS/vaadin-menu-bar_Free Registered User_userMe_6d88ae'))
WebUI.click(findTestObject('Object Repository/POkus3/Page_Dashboard - altFINS/vaadin-context-menu-item_Accounts'))
WebUI.waitForElementClickable(findTestObject('Pokus2/Page_Accounts - altFINS/Sergej'), 10)
WebUI.doubleClick(findTestObject('Pokus2/Page_Accounts - altFINS/Sergej'))
您是否尝试过以下操作:
创建一些自定义关键字类,定义为:
public final class GeneralWebUIUtils {
public static int GetNumberOfWindows() {
return DriverFactory.getWebDriver()
.getWindowHandles()
.size();
}
public static boolean WaitForCondition(Closure<Boolean> onCheckCondition, int timeOut, Closure<String> onErrorMessage, FailureHandling failureHandling = FailureHandling.STOP_ON_FAILURE) {
boolean isConditionSatisfied = false;
final long startTime = System.currentTimeMillis();
while((!isConditionSatisfied) && (System.currentTimeMillis() <= startTime + timeOut * 1000) {
isConditionSatisfied = onCheckCondition();
}
if ((!isConditionSatisfied) && failureHandling.equals(FailureHandling.STOP_ON_FAILURE))
throw new StepFailedException(onErrorMessage(this.GetElapsedTime(startTime)));
return isConditionSatisfied;
}
public static boolean WaitForWindowOpenChange(int timeOut, FailureHandling failureHandling = FailureHandling.STOP_ON_FAILURE) {
final int initNumberOfWindows = this.GetNumberOfWindows();
return this.WaitForCondition({
return this.GetNumberOfWindows() != initNumberOfWindows;
},
timeOut,
{ double elapsedTime ->
return "Number of open windows/tabs has NOT changed after ${elapsedTime} seconds";
},
failureHandling,
);
}
public static double GetElapsedTime(long startTimeMillis) {
return (System.currentTimeMillis() - startTimeMillis) / 1000.0;
}
}
然后,在您的测试用例中,这样称呼它:
WebUI.click(findTestObject('Pokus2/Page_Accounts - altFINS/Sergej'));
GeneralWebUIUtils.WaitForWindowOpenChange(15);
这将解决您的问题,即使至少不会使您的测试用例失败。
请查看代码,如果有任何问题请告诉我!
更新:我刚刚从您的评论中看到,您尝试与之交互的输入按钮存在于某个影子根中。
在这种情况下,您需要为影子根元素创建测试对象,然后将其测试对象设为该元素的子测试对象
最近 Android 设备也遇到了类似的问题。
但是单击同一个元素两次(不是双击,而是单击两次)帮助了我。