【问题标题】:Protractor click hidden element " RangeError: Maximum call stack size exceeded"量角器单击隐藏元素“ RangeError:超出最大调用堆栈大小”
【发布时间】:2015-01-28 05:32:52
【问题描述】:

我在尝试单击量角器测试中的隐藏元素时遇到问题。

下面是返回的错误消息,以及导致错误消息的代码 sn-p。任何关于为什么抛出此错误的想法将不胜感激。

RangeError: Maximum call stack size exceeded


browser.driver.executeScript("return arguments[0].click()", bank_page.boaClick);

并且“bank_page.boaClick()”被引用为页面对象上的变量,sn-p如下所示:

 boaClick: { get: function () { return element.all(by.model('bankConnection.bank')).get(0); }},

下面是我试图用该变量引用的 sn-p:

<input type="radio" ng-model="bankConnection.bank" ng-value="bank" class="ng-valid ng-dirty" name="00D" value="[object Object]">

我基本上只是希望能够点击这个单选按钮,但该按钮是一个隐藏元素,所以在网上搜索后,第一个“browser.driver.executeScript”调用似乎是实现这一目标的最佳选择,但我自从我实现了 RangeError 后,它就回来了。

【问题讨论】:

  • 只是一个快速的重要检查:您使用的是什么量角器、浏览器和浏览器版本?
  • 我用的是Chrome,浏览器版本:40.0.2214.93(64位),量角器版本:1.6.1

标签: angularjs protractor angularjs-e2e


【解决方案1】:

executeScript 不接受页面对象。您需要传入一个原始的 web_element。 (量角器的元素查找器也不起作用)

试试:

browser.driver.executeScript("return arguments[0].click()", bank_page.boaClick.get().getWebElement());

【讨论】:

  • 感谢您的帮助,这似乎使“RangeError”不再存在,但我仍然遇到一个问题,即它实际上没有单击隐藏元素。有什么想法吗?
  • 检查您是否选择了正确的元素。 element.all(by.model('bankConnection.bank')).get(0).getAttribute('name')).toEqual('00D') 有效吗?
  • 如果我添加以下内容:expect(element.all(by.model('bankConnection.bank')).get(0).getAttribute('name')).toEqual('00D ');我收到一条错误消息,提示“预期 '011' 等于 '00D'”。所以它肯定会在那个位置找到一些东西。
  • 而是找不到name="00D"
  • 我也试过运行这个: element.all(by.repeater('bank in firstBanks')).then(function(banks) { var bankElement =银行[0].element(by.model ('bankConnection.bank')); 期望(bankElement.getAttribute('name')).toEqual('00D'); });而且我也得到了相同的“011”而不是“00D”
猜你喜欢
  • 2016-04-20
  • 2018-02-06
  • 1970-01-01
  • 2021-07-31
  • 2021-05-30
  • 2021-07-11
  • 2019-07-05
相关资源
最近更新 更多