当前位置: 首页 > 知识库问答 >
问题:

等待Angular完成加载问题

戚鸿福
2023-03-14

我正在使用与Salim在这里发布的内容类似的实现使用Selenium测试AngularJS

然而,当运行时,检查将系统性地等待“webdriver等待”期。

据我所知,无论发生什么,布尔检查总是返回false。

有人有什么想法吗?

我试图缩短等待的超时值以及更改池速率,但所做的只是使用这些新值,而不是真正“返回true”检查。

// Will check if Angular still has pending http_requests ongoing and wait if required
public boolean untilAngularHasFinishedProcessing()
{
  until(() ->
    {
      final boolean hasFinishedLoading = Boolean.valueOf(((JavascriptExecutor) driver)
    .executeScript("return (window.angular !== undefined) "
      + "&& (angular.element(document).injector()!==undefined) "
      + "&&(angular.element(document).injector().get('$http')"
      + ".pendingRequests.length===0)").toString());
      log.info("Waiting on angular to finish processing => " + hasFinishedLoading);
      return hasFinishedLoading;
    }
  );
  return true;
}

预期:只要Angular没有任何挂起的http\U请求,等待就会结束

结果:无论发生什么,始终达到“超时”

共有1个答案

吉嘉珍
2023-03-14

我想我已经发现了问题:我们的应用程序使用角度6。x,而该检查用于角度1。x应用程序。

 类似资料:
  • 现在的大多数的Web应用程序是使用Ajax技术。当一个页面被加载到浏览器时, 该页面内的元素可以在不同的时间点被加载。这使得定位元素变得困难, 如果元素不再页面之中,会抛出 ElementNotVisibleException 异常。 使用 waits, 我们可以解决这个问题。waits提供了一些操作之间的时间间隔- 主要是定位元素或针对该元素的任何其他操作。 Selenium Webdriver

  • 所以我在Angular中开发了一个新组件,在ngOninit中我有以下异步函数。。。 这getUserProfile需要完成才能调用它。getPrivateGroup()和这个。需要先完成getPrivateGroup(),然后才能调用此函数。loadGroupPosts()。我知道我可以在异步请求的回调中编写这些函数,但我想知道是否有一种方法可以将它保存在ngOnInit中以保持其更干净? 有人

  • 我通读了Dart/flatter中的Async/Await/then,试图理解为什么aysnc函数中的Await不会等到完成后再继续。在我的UI中,有一个按钮调用一个异步方法来返回一个位置,该位置总是返回null,并且不等待函数完成。 该函数将调用推送到一个新的UI页面,该页面选择一个位置,并应返回一个结果。如何使该函数等待结果?我不是在使用异步吗?

  • 我设法用Selenium静默下载了文件。但是Firefox通过添加1、2、3自动重命名该文件。文件名,因为服务器发送的每个文件都具有相同的名称。但我想根据当前的日期和时间重命名文件。于是,试着: > 开始下载文件->DownloadLink.Click(); 而(不存在带有原始名称的文件或不存在 .part) · · { } 将下载的文件重命名为所需的名称。 但它会重命名一些文件。有些文件长度为0

  • 问题内容: 我有一个登录框架,我必须从另一个线程等待。成功登录后,框架将自行处置。我想弹出该应用程序的主框架。现在,我正在观看一个布尔值,以确定何时启动主机。正确的做法是什么?观看布尔值只是感觉并不优雅。 问题答案: 如果您有Java 5或更高版本,则可以使用CountDownLatch。例如,假设主框架最初处于控制状态,则让主框架创建一个倒数为1的,然后将此锁存器传递给登录框架。然后让主机等待锁

  • 我在eclipse中使用SeleniumWebDriver和TestNG。问题是页面在某些数据的中途重新登录,并且重新加载的时间是灵活的,这就是为什么我不能应用显式等待时间。我想让webdriver等待,直到重新加载完成。 我正在尝试通过此代码执行此操作……但它不起作用。