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

Identifying clickable element in angularjs - ng-binding

我有一个搜索字段,其结果由 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")

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

  1. 将您的搜索查询发送到适当的元素(sendKeys#landingSearch 元素)
  2. 让 Protractor 等到显示搜索结果。当 element(by.css(ul.dropdown-menu)).isDisplayed() promise 产生 true 时就是这种情况。
  3. 单击来自 match in matches 中继器的搜索结果之一,例如使用 Protractor 的 all.elements(by.repeater('match in matches'))
  4. 再次,让 Protractor 等待,这次直到加载 URL 中带有 company 的新页面。

第2、4步的等待可以使用Protractor的wait method, or Protractor's Expected Conditions.

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