首页 > 解决方案 > 如何处理空手道登录页面加载后的不确定性

问题描述

在我的应用程序中,它使用多层登录,例如应用程序向 Okta 发送请求,然后 okta 向 GCP 发送带有用户信息的请求,之后只有登录成功。我创建了登录功能:

            * driver fdiPortalUrl
            * maximize()
            * retry(50, 1000).waitForUrl('/login')
            * call read 'classpath:fdiPortalUI/fdiPortalPageObjects.json'
            * if (exists(loginPage.username)) click(loginPage.username)
            * if (!exists(loginPage.username)) reload()
#           * retry(50, 1000).waitFor(loginPage.username)
            * retry(30, 1000).waitForUrl('/login')
            * match text(loginPage.usernameLabel) contains 'Username'
            * match text(loginPage.passwordLabel) contains 'Password'
            * input(loginPage.username, username)
            * input(loginPage.password, password)
            * waitForEnabled(loginPage.signInBtn).click()
            * retry(20, 1000).waitForUrl('/auth/callback')
            * retry(50, 1000).waitForUrl('/inventory-management')

即使经过这些延迟并重试几次,它也会在最后一行失败。我想让它变成动态的,就像它最终失败并且无法/inventory-management在 url 中找到一样,所以它再次重新加载页面。你能帮忙吗?

标签: karate

解决方案


抱歉,没有捷径可走,您已经尝试过重试等。

也许是时候考虑一​​些高级技术了,比如模拟部分 UI 或使用 API 来避免登录等:https ://github.com/intuit/karate/tree/master/karate-core#hybrid-tests

否则我没有其他建议。也许这里的其他人可以提供帮助。


推荐阅读