Protractor searchText.indexOf不是量角器5.3.0中的函数

Protractor searchText.indexOf不是量角器5.3.0中的函数,protractor,Protractor,我们最近从量角器4.0.14升级到了5.3.0,遇到了一个错误。我们的测试是这样做的: element.all(by.css('some locator')).all(by.cssContainingText('some locator', 'some description')); 使用量角器4.0.14可以通过,但是使用5.3.0,我得到了以下错误: 失败:未知错误:searchText.indexOf不是函数 (会话信息:chrome=65.0.3325.146) 最新版本的量角器有

我们最近从量角器4.0.14升级到了5.3.0,遇到了一个错误。我们的测试是这样做的:

element.all(by.css('some locator')).all(by.cssContainingText('some locator', 'some description'));
使用量角器4.0.14可以通过,但是使用5.3.0,我得到了以下错误:

  • 失败:未知错误:searchText.indexOf不是函数 (会话信息:chrome=65.0.3325.146)
最新版本的量角器有什么变化导致了这种情况吗?

似乎对
cssContainingText
定位器进行了一些更改,以允许使用正则表达式。但是我在那个文件中没有看到
索引

这里是提交

我看到它也涉及到
clientSideScripts.ts

functions.findByCssContainingText
中,它引用了
searchText.indexOf(“'uuuu REGEXP_uu')
,如果
searchText
未定义,它可能会遇到与您类似的错误情况


是否在没有第二个参数的情况下使用.cssContainingText('someSelector')
?或者你的第二个参数可能是空的/未定义的(而不是空字符串)?

我发现,如果我从包含选择器的对象之外的另一个对象内部引用描述符(在我的例子中是regex),我也会遇到这个错误。基本上,传递一个索引而不是直接引用会破坏它。像这样

element.all(by.css('some locator')).all(by.cssContainingText('some locator', CONSTANTS.regexPatterns.someDescriptionRegex)
“this”中更直接的引用可以很好地实现

someDescriptionRegex: {get function() { return new RegExp(...) }},

element.all(by.css('some locator')).all(by.cssContainingText('some locator', this.someDescriptionRegex)

希望这有帮助。

在我的例子中,问题只是我没有将字符串参数传递给
csscontingtext
,而是传递了一个数字值。修复方法只是将其转换为字符串(添加
+'


在以前的版本中,由于Javascript的动态键入,这工作正常,但当添加了regex支持(如另一个版本中所述)后,现在开始对参数调用
indexOf
函数,该函数只对字符串有效。

我实际上没有看到
getText()
调用?看起来您只是返回了所有匹配的元素。在这种情况下,
searchText
不是字符串,而是
ElementArrayFinder
。你确定你发布了正确的代码片段吗?@tehbeardone你是对的,我不是在调用getText()。似乎错误发生在对cssContainingText()的调用中。有趣。
searchText
从哪里来?我在你的代码片段中没有看到它?我怀疑可能会使用
element.all().all()
,从我的观点来看,你只能使用
element.all()
,不能一个接一个地链接
all()
by.cssContainingText('css selector', 123 + ''))