在我应用程序中,它使用多个层进行登录,就像应用程序在Okta向GCP发送包含用户信息的请求之后向okta发送请求,以及在唯一的登录成功之后。我已经创建了如下登录功能:
* 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')即使在这些延迟和重试之后,它也会在最后一行失败。我想使它成为动态的,如果它在结束时失败,并且在url中找不到/inventory-management,那么它就会重新加载页面。你能帮帮我吗。
发布于 2020-09-08 23:44:38
抱歉,这里没有捷径,您已经尝试过重试等。
也许是时候考虑一些高级技术了,比如模拟部分用户界面或者使用API来避免登录等等:https://github.com/intuit/karate/tree/master/karate-core#hybrid-tests
除此之外,我没有其他的建议。也许这里的其他人可以提供帮助。
https://stackoverflow.com/questions/63794987
复制相似问题