识别angularjs中的可点击元素 - ng-binding

时间:2015-04-30 17:29:46

标签: angularjs automation protractor

我有一个搜索字段,结果由ElasticSearch提供支持,我正在自动选择其中一个结果。 CSS和XPath在选择元素和点击它方面不会产生很大的影响,所以我希望得到一些帮助。

代码:

li data-ng-repeat="match in matches" data-ng-class="{active:          isActive($index) }" data-ng-mouseenter="selectActive($index)" data-ng-  click="selectMatch($index)" class="ng-scope active">
<a tabindex="-1" class="bg-info ng-scope">
<div class="search-item-container row">
<div class="col-sm-10">
  <span class="company-name ng-binding" bind-html-unsafe="match.model.name.length > 30 ? (match.model.name.substr(0,30) + '...').toLowerCase() : match.model.name.toLowerCase() | typeaheadHighlight:query"><strong>alph</strong>, incorporated</span>
  <div class="company-info">
    <address>
      <span class="address-span-container ng-isolate-scope" data-ng-switch="displayFormat" data-obb-address-display-directive="" data-addresses="match.model.addresses" data-display-format="inlineCsz"

使用量角器我的选择器将是: element(by."some selector"(item to select))).click();

我已尝试过CSS和Xpath,结果如下:   NoSuchElementError: No element found using locator: By.cssSelector(".search-popup li:nth-child(3) a")

1 个答案:

答案 0 :(得分:1)

查看openbookben.com,您似乎需要执行以下步骤:

  1. 将您的搜索查询发送到相应的元素(sendKeys#landingSearch元素)
  2. 让量角器等到搜索结果显示出来。当element(by.css(ul.dropdown-menu)).isDisplayed()承诺产生真实时就是这种情况。
  3. 点击match in matches转发器中的一个搜索结果,例如使用量角器all.elements(by.repeater('match in matches'))
  4. 再次,让Protractor等待,直到加载了URL中包含company的新页面为止。
  5. 对于步骤2和4中的等待,您可以使用量角器的wait方法或量角器的Expected Conditions

    您的NoSuchElementError发生是因为没有等待,搜索结果还没有。