Katalon Studio - 单击元素后 - 它通过了,但什么也没发生

问题描述 投票:0回答:2

当我点击按钮时(手动点击后,会打开新的弹出窗口),但在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'))
selenium xpath katalon-studio
2个回答
0
投票

您是否尝试过以下操作:

创建一些自定义关键字类,定义为:

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);

这将解决您的问题,即使至少不会使您的测试用例失败。

请查看代码,如果有任何问题请告诉我!

更新:我刚刚从您的评论中看到,您尝试与之交互的输入按钮存在于某个影子根中。

在这种情况下,您需要为影子根元素创建测试对象,然后将其测试对象设为该元素的子测试对象


0
投票

最近 Android 设备也遇到了类似的问题。

但是单击同一个元素两次(不是双击,而是单击两次)帮助了我。

© www.soinside.com 2019 - 2024. All rights reserved.