【问题标题】:an invalid or illegal selector was specified error on protractor angularjs在量角器 angularjs 上指定了无效或非法的选择器错误
【发布时间】:2015-06-18 16:10:08
【问题描述】:

所以我一直使用量角器作为我的 e2e 测试 angularjs 组件,我一直面临这个问题..

所以我有一个像这样的 html 标记

 <div class="item">
       <div class="item-grid">grid A</div>
       <div class="item-actions">
           <input type="image" class="item-action-image" title="info" src="images/icons/system-info.png">
           <input type="image" class="item-action-image" title="event" src="images/icons/system-event.png">
       </div>
    </div>
<div class="item">
       <div class="item-grid">grid B</div>
       <div class="item-actions">
           <input type="image" class="item-action-image" title="info" src="images/icons/system-info.png">
           <input type="image" class="item-action-image" title="event" src="images/icons/system-event.png">
       </div>
    </div>

假设如果点击了上面输入的输入图像之一,则会出现一个信息模式来显示信息。

所以我想在量角器上创建一个场景来模拟那些..

场景是

it("should've display grid information datas", function() {

        element(by.css(".item:eq(0) > .item-actions > input[title='info']")).click();

        browser.waitForAngular();

  });

上述代码的逻辑解释是量角器会选择第一个'.item' 元素然后单击其中的'input[title="info"]' 对吗?

但是我得到了这个错误

InvalidSelectorError: The given selector .item:eq(0) > .item-actions > input[title='info'] is either invalid or does not result in a WebElement. The following error occurred:
InvalidSelectorError: An invalid or illegal selector was specified

因此,自从我刚开始使用量角器以来,我一直被困住。有没有人可以帮助我解决这个问题?

【问题讨论】:

  • :eq(0) 不是 CSS AFAIK
  • @Quentin: It is a jquery selector,在 css 文件中不可用。 (我不知道量角器是否支持这些......)
  • 试试.item &gt; .item-actions &gt; input[title='info']") 这应该会给你第一个.item下的输入
  • @JuanMendes 我试过你建议的那个,不幸的是被点击的不是第一个元素:(
  • @user3860691 如果你在.item周围显示HTML,我们可以帮助使用nth-child你可以试试.item:nth-child(1) &gt; .item-actions &gt; input[title='info']")

标签: javascript angularjs css-selectors protractor


【解决方案1】:

您可以链接 ElementFinder。例如:

$$('.item')
  .get(1)
  .$('input[title=info]')
  .click();

或者

element.all(by.css('.item'))
  .get(1)
  .element(by.css('input[title=info]')
  .click();

注意$$('.abc')element.all(by.css('.abc')) 相同,$('.abc')element(by.css('.abc')) 相同

【讨论】:

    猜你喜欢
    • 2020-11-11
    • 1970-01-01
    • 1970-01-01
    • 2019-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-17
    相关资源
    最近更新 更多