Javascript 量角器';s CSSCContainingText无法使用RegExp找到元素

Javascript 量角器';s CSSCContainingText无法使用RegExp找到元素,javascript,regex,protractor,Javascript,Regex,Protractor,我正在使用JavaScript和量角器编写一些测试。 比如说,我想找到class=“main class”的元素,如以下示例所示: <div class="main-class"> ... <div class = "some-class">Search Line</div> ... </div> 但我总是犯同样的错误: No element found using locator: by.cssContainingText("

我正在使用JavaScript和量角器编写一些测试。 比如说,我想找到class=“main class”的元素,如以下示例所示:

<div class="main-class">
   ...
   <div class = "some-class">Search Line</div>
   ...
</div>
但我总是犯同样的错误:

No element found using locator: by.cssContainingText(".main-class", "/^Search Line$/")
如果我将
reg
更改为
'some string'
-一切正常。 似乎cssContainingText不适用于我的正则表达式,尽管量角器文档说它可以通过正则表达式进行搜索:


您能告诉我,我做错了什么吗?

by.cssContainingText
支持RegExp,因为量角器, 如果量角器低于5.2.1,则regexp将被视为字符串,并使用
string.indexOf()
,而不是使用
regexp.test()


by.cssContainingText
支持RegExp自量角器, 如果量角器低于5.2.1,则regexp将被视为字符串,并使用
string.indexOf()
,而不是使用
regexp.test()


5.2.1之前版本的解决方案是使用xpath:

let text = 'Search Line';
let reg = '//*[starts-with(.,\''+text+'\')]';
element(by.xpath(reg)); //how to call element
这在功能上等同于正则表达式
/^Search Line/


这在5.2.1之后也会起作用,但您可以查看Yong的答案,它会更好。

5.2.1之前的解决方案是使用xpath:

let text = 'Search Line';
let reg = '//*[starts-with(.,\''+text+'\')]';
element(by.xpath(reg)); //how to call element
这在功能上等同于正则表达式
/^Search Line/


这在5.2.1之后也会起作用,但是你可以查看一下Yong的答案,它会更好。

谢谢你的答案,我已经检查并发现我使用的量角器版本是5.2.0。我已经更新到了5.2.1,但错误仍然存在(有一点改变):
使用locator:by.cssContainingText(“.main class”),“\uu REGEXP\uuu/^Search Line$/”
@Atsvetk未找到元素。该错误意味着量角器找不到元素。只有当文本正好是
搜索行
时,该正则表达式才能找到元素。元素值是否改变?我想我知道我的问题是:在其他子元素中有更多的文本,因此父元素的“总”文本大于1个字符串。我已经将正则表达式更改为
newregexp('^'+text)
,现在一切都正常了,非常感谢,你救了我一天!谢谢你的回答,我已经检查并发现我使用的量角器版本是5.2.0。我已经更新到了5.2.1,但错误仍然存在(有一点改变):
使用locator:by.cssContainingText(“.main class”),“\uu REGEXP\uuu/^Search Line$/”
@Atsvetk未找到元素。该错误意味着量角器找不到元素。只有当文本正好是
搜索行
时,该正则表达式才能找到元素。元素值是否改变?我想我知道我的问题是:在其他子元素中有更多的文本,因此父元素的“总”文本大于1个字符串。我已经将正则表达式更改为
newregexp('^'+text)
,现在一切都正常了,非常感谢,你救了我一天!谢谢你的回答,但我必须找到父元素,而不是子元素。我提供的示例没有实际的那么复杂,我不能只使用,例如,
.xpath('..')
多次来访问父元素。。。无论如何,这是一个有趣的建议,再次感谢!谢谢你的回答,但我必须找到父元素,而不是子元素。我提供的示例没有实际的那么复杂,我不能只使用,例如,
.xpath('..')
多次来访问父元素。。。无论如何,这是一个有趣的建议,再次感谢!