Protractorjs测试 - 如何使用:contains('someText') - 可能错误地转义字符串

use*_*202 3 protractor

我有一个我需要测试的角形,我想通过其textnode内容选择一个没有标识的项目.在其他平台上的jquery和selenium中,我能够使用一个名为:contains()的特殊css选择器,它允许我查找东西

ptor.findElement(protractor.By.css('label:contains(\'some text\') > input')).getAttribute('value').then(function (value) {
    expect(value).toContain('myExpectedValue');
});
Run Code Online (Sandbox Code Playgroud)

当我运行这个时,我得到一个关于无效字符串的词法错误.我已经尝试了多种方法来逃避字符串中的引号.我也尝试了一个xpath表达式,它在引入引号后做了同样的事情.它看起来像这样:

ptor.findElement(protractor.By.xpath('//label[text()="some text"]/descendant::input[1])')).getAttribute('value').then(function (value) {
    expect(value).toContain('myExpectedValue');
});
Run Code Online (Sandbox Code Playgroud)

那失败了同样的方式.

1:量子器中是否包含硒功能?
2:我逃错了吗?

请不要告诉我在对象上附上身份.我不允许修改标记.

Dav*_*vid 12

  1. 你不能使用:包含protractor.By.css定位器因为:contains不是CSS3规范的一部分(见这里)

  2. 我不知道你的xpath有什么问题,但这不是逃避.我在量角器中使用过类似xpath的字符串.

更新:

为了响应缺少':contains'选择器,为此目的创建了一个新的定位器:

示例:By.cssContainingText('ul .pet','Dog')将查找所有包含"Dog"类的'pet'类的ul子项.在这里阅读更多相关信息

注意:您可能需要更新,因为旧版本的量角器没有此选择器.