javascript - 循环在代码的哪一点结束?

标签 javascript selenium

我在 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/

相关文章:

testing - 与Selenium的模糊截图对比

java - 如何执行移动鼠标和点击 Action ?

javascript - 试图理解闭包 (JavaScript)

javascript - 如何根据ajax中的搜索字段输入调用URL?

python - 如何在Python中使用selenium在弹出身份验证窗口时自动登录

java - 我如何在 testNG 中使用 IAnnotationTransformer?

java - Selenium Webdriver AJAX - 如何等待请求完成

javascript - Java 和 JavaScript 中的不同 md5 哈希结果

javascript - knockout 找不到结束评论标签

JavaScript 库按需加载资源?