【问题标题】:Proptractor error when call element methods调用元素方法时的量角器错误
【发布时间】:2017-03-06 16:12:12
【问题描述】:

我所有的行动,只是:

element(by.binding('item.order.id')).click();

在这个代码区:

<tr
  ng-repeat="item in dataList.content"
  ng-class="{'colored-order': (settingsStorage.getProperty('personal', 'coloredOrders') === true || settingsStorage.getProperty('personal', 'coloredOrders') === 'true')}"
  class="{{item.order.status}}"
>
  <td>
    <a
      href="{{contextPath}}/company/view/{{item.ownerId}}/"
      target="_blank"
    >
      <strong
        class="mL20"
        ng-if="search.viewType === 'ARRIVED'"
        ng-cloak
      >
        {{item.order.billTo.name}}
      </strong>
    </a>
    <strong
      class="mL20"
      ng-if="search.viewType !== 'ARRIVED'"
      ng-cloak
    >
      {{item.order.billTo.name}}
    </strong>
  </td>
  <td>
    <a
      ui-sref="vieworder({ orderId: item.order.id })"
      class="link_to_view_order"
      analytics-event
      analytics-category-attr="Order_View"
    >
      {{item.order.id}}
    </a>
  </td>
</tr>
信息: 失败:等待异步 Angular 任务在 11 秒后完成超时。这可能是因为当前页面不是 Angular 应用程序。有关更多详细信息,请参阅常见问题解答:https://github.com/angular/protractor/blob/master/docs/timeouts.md#waiting-for-angular 在等待带有定位器的元素时 - 定位器:by.binding("item.order.id")。 以下任务待处理: - $超时:函数(){ 删除 $rootScope.pagesCache.pages[data.page]; if ($state.current.name == data.page) { $rootScope.$broadcast('update:data:' + data.page, { page: data.page }); } }

但是当我尝试打印来控制这个元素时,它被打印出来了,没有问题。

【问题讨论】:

  • 不好的问题,没有足够的细节和代码。
  • 没有详细信息,因为没有代码,只是我得到了页面,然后尝试点击链接,就这样。我得到了这个错误。经过长时间的谷歌研究,我的问题没有答案。
  • 以下答案中提供的替代方案不适合您吗? ..@A.Sitar
  • @AdityaReddy 是的,我认为它可能很有用,但是当我尝试在我的代码中使用它时,我会标记这个答案,如果它解决了我的问题
  • @A.Sitar .. 当然老兄 .. 我只是在检查这些替代方案是否适用于您的应用

标签: angularjs protractor end-to-end


【解决方案1】:

可能与问题中回答的问题相同 - Protractor Locator Time Out exception for AngularJs application

这些问题的根本原因通常是当站点不断轮询 $timeout 或 $http 时,Protractor 将无限期地等待并超时。

更多关于为什么你会看到这个错误的细节是documented here。我已经在另一个答案中详细解释了下面的aletrnatives

  1. IgnoreSynchronization:检查here

  2. Interval.js:

  3. 尝试使用不同的 timeOut 配置,看看您的应用轮询是否会在一段时间后停止

allScriptsTimeout: 120000, getPageTimeout: 120000, jasmineNodeOpts: { defaultTimeoutInterval: 120000 }

【讨论】:

  • 这个建议很有用:1. IgnoreSynchronization:检查here
猜你喜欢
  • 1970-01-01
  • 2019-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-04
相关资源
最近更新 更多