Javascript 量角器';s CSSCContainingText无法使用RegExp找到元素
我正在使用JavaScript和量角器编写一些测试。 比如说,我想找到class=“main class”的元素,如以下示例所示: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("
<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('..')
多次来访问父元素。。。无论如何,这是一个有趣的建议,再次感谢!