量角器 - 按任何属性查找元素

时间:2015-12-18 18:36:45

标签: javascript css angularjs css-selectors protractor

<ul class="menu">
    <li ui-sref-active="active">
        <a class="ng-scope" translate="menu.home" href="#/home">Home</a>
    </li>
    <li ui-sref-active="active">
        <a class="ng-scope" ui-sref="customer.list" translate="menu.customers" href="#/customers">Customers</a>
    </li>
</ul>

我想使用文本&#34; Home&#34;来搜索元素。如下面的代码:

element(by.linkText("Home")).click();

但我需要使用任何其他可用属性,在本例中为translate,以使其更准确。

这样做有可能吗?我看过这样的事情

by.css(".ng-scope input[translate='menu.customers']"); 

但它似乎不起作用。

1 个答案:

答案 0 :(得分:4)

  

by.css(".ng-scope input[translate='menu.customers']");

这基本上转换为:给我input元素menu.customers translate属性值,在父元素内部ng-scope类。这不起作用,因为您提供的HTML中没有ng-scope类的父元素,而是a而不是您正在寻找的input

相反,你可能意味着:

a.ng-scope[translate='menu.customers']

尽管如此,我不建议依赖相当广泛的ng-scope课程。

根据您提供的HTML,以下是几个相当精确的CSS选择器:

ul.menu > li > a[href*=home]  // href contains "home"
ul.menu > li > a[href$=home]  // href ends with "home"
ul.menu > li > a[translate="menu.home"]  // translate equals to "menu.home"
ul.menu > li > a[translate$=home]  // translate contains "home"