3

我有一个需要测试的角度形式,我想通过它的文本节点内容选择一个没有身份的项目。在其他平台上的 jquery 和 selenium 中,我能够使用一个名为 :contains() 的特殊 css 选择器,它可以让我找到东西

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

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

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

那以同样的方式失败了。

1:量角器中是否有 :contains selenium 功能?
2:我是否错误地转义了我的字符串?

请不要告诉我将身份附加到对象上。我不允许修改标记。

4

1 回答 1

12
  1. 您不能将 :contains 与 protractor.By.css 定位器一起使用,因为 :contains 不是 CSS3 规范的一部分(请参见此处

  2. 我不知道您的 xpath 有什么问题,但这不是转义。我在量角器中使用了类似的 xpath 字符串。

更新:

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

示例: By.cssContainingText('ul .pet', 'Dog') 将查找所有具有类 'pet' 且包含文本 'Dog' 的 ul 子项。在此处阅读有关它的更多信息

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

于 2013-10-10T21:05:07.757 回答