Jasmine “如何修复”;无法读取属性';应用';“未定义”的定义;尝试使用量角器获取位置?

Jasmine “如何修复”;无法读取属性';应用';“未定义”的定义;尝试使用量角器获取位置?,jasmine,protractor,Jasmine,Protractor,我正在尝试使用量角器(v6.0.0)方法调用getLocation()获取元素的位置,但是出现以下异常: TypeError: Cannot read property 'apply' of undefined at <Jasmine> at actionFn (/usr/lib/node_modules/protractor/built/element.js:95:44) at <Jasmine> at actionResults.getWebElements.then

我正在尝试使用量角器(v6.0.0)方法调用getLocation()获取元素的位置,但是出现以下异常:

TypeError: Cannot read property 'apply' of undefined
at <Jasmine>
at actionFn (/usr/lib/node_modules/protractor/built/element.js:95:44)
at <Jasmine>
at actionResults.getWebElements.then(/usr/lib/node_modules/protractor/built/element.js:468:44)
at <Jasmine>
at ElementArrayFinder.applyAction_(/usr/lib/node_modules/protractor/built/element.js:466:29)

我需要id为mat-input-1的输入坐标,但不幸的是,我得到了该异常。

量角器有一个指向的链接,它列出:

W3C WebDriver规范遵从性的更改

  • 将WebElement.getSize()和WebElement.getLocation()替换为 单个方法,WebElement.getRect()
所以看起来您应该使用.getRect()


现在对于量角器6本身,这显然是一个文档问题。我们建议现在就使用5.4.2。

这段代码会引发异常,这真的很奇怪。堆栈跟踪提到了
applyAction
getWebElements
,它们是
ElementArrayFinder
方法,因此我希望代码涉及
元素。所有
$
都在某个地方。您确定该行正在抛出该异常吗?也许它是在代码中的另一个点上释放的?谢谢,你完全正确!我用的是5.4.2,一切都很有魅力。正如你所说的,文档在这个意义上并不清楚,实际上量角器网页昨天已经好几个小时没有工作了。是的。我没有更新到6,实际上我们从npm中删除了“最新”标记,因此如果您安装了
npm量角器,最新的是5.4.2。我们将有更多关于所有这些更改的文档。如果您想开始,最好的第一步是将所有内容移动到async/await。
it('should compare login page with a baseline', async () => {
    let input =  element(by.id('mat-input-1'));
    await input.getLocation();
});