识别 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,您似乎需要执行以下步骤:
- 将您的搜索查询发送到适当的元素(
sendKeys
到 #landingSearch
元素)
- 让 Protractor 等到显示搜索结果。当
element(by.css(ul.dropdown-menu)).isDisplayed()
promise 产生 true 时就是这种情况。
- 单击来自
match in matches
中继器的搜索结果之一,例如使用 Protractor 的 all.elements(by.repeater('match in matches'))
- 再次,让 Protractor 等待,这次直到加载 URL 中带有
company
的新页面。
第2、4步的等待可以使用Protractor的wait method, or Protractor's Expected Conditions.
您的 NoSuchElementError
发生是因为没有等待,搜索结果还没有出现。
我有一个搜索字段,其结果由 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,您似乎需要执行以下步骤:
- 将您的搜索查询发送到适当的元素(
sendKeys
到#landingSearch
元素) - 让 Protractor 等到显示搜索结果。当
element(by.css(ul.dropdown-menu)).isDisplayed()
promise 产生 true 时就是这种情况。 - 单击来自
match in matches
中继器的搜索结果之一,例如使用 Protractor 的all.elements(by.repeater('match in matches'))
- 再次,让 Protractor 等待,这次直到加载 URL 中带有
company
的新页面。
第2、4步的等待可以使用Protractor的wait method, or Protractor's Expected Conditions.
您的 NoSuchElementError
发生是因为没有等待,搜索结果还没有出现。