我在 github 上探索 Selenium Webdriver 框架的最佳实践,发现代码如下:
async function waitForVisible(driver, locator, retries = 3) {
try {
const element = await driver.findElement(locator);
await driver.wait(until.elementIsVisible(element), WAIT_TIME_OUT)
} catch (err) {
throw new Error(`Element "${locator.toString}" is not visible after maximum retries, error message: ${err.message}`)
}
await driver.sleep(WAIT_TIME_BEFORE_RETRY);
return waitForVisible(driver, locator, retries - 1)
}
如您所见,该函数看起来无限递归,并且仅以抛出异常结束。但我对这段代码进行了很多测试,我注意到它结束时没有抛出异常。
问题是它如何可能以及在什么情况下“循环”结束?我尝试尽可能多地理解代码。
最佳答案
我发现使用 return 语句是有效的。
关于javascript - 循环在代码的哪一点结束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47896519/