我正在探索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)
}
如您所见,看起来该函数无限递归,并且只能通过抛出异常来结束。但我正在测试这段代码很多,我注意到它结束时没有抛出异常。
问题是它是如何可能的以及“循环”结束的时间/情况?我尝试尽可能地理解代码。
答案 0 :(得分:-2)
我发现使用return语句有效。