我们有一些文本框,需要从弹出列表中选择值。元素和弹出窗口是这样的:
相关的html代码如下:
<div _ngcontent-c6="" class="col px-0">
<input _ngcontent-c6="" aria-multiline="false" autocapitalize="off"
autocorrect="off" class="form-control ng-dirty ng-valid open ng-touched"
formcontrolname="ESYSITENAME" id="esySiteName" name="" placeholder=""
role="combobox" type="text" autocomplete="off" aria-autocomplete="list"
aria-expanded="true" aria-activedescendant="ngb-typeahead-2-0"
aria-owns="ngb-typeahead-2">
<ngb-typeahead-window class="dropdown-menu show ng-star-inserted"
role="listbox" id="ngb-typeahead-2" style="top: 39px; left: 0px;">
<button class="dropdown-item ng-star-inserted active" role="option"
type="button" id="ngb-typeahead-2-0">
<ngb-highlight _ngcontent-c6="" _nghost-c25="" class="ng-star-inserted">
<span _ngcontent-c25="" class="ngb-highlight ng-star-inserted">
Bull Run Elementary School
</span>
</ngb-highlight>
</button>
</ngb-typeahead-window>
</div>
我尝试使用不同的策略来选择Popup元素,例如:
let EsyNamePopup = $('#ngb-typeahead-2-0 > ngb-highlight > span');
await helpers.waitForElementVisibility(EsyNamePopup);
await helpers.clickWhenClickable(EsyNamePopup);
// or following way:
let EsyNamePopup = element(by.cssContainingText('span', 'Bull Run Elementary School,));
await EsyNamePopup.click();
他们都不工作,但是收到以下错误消息:
NoSuchElementError:使用定位器找不到任何元素:By(css选择器,#ngb-typeahead-2-0> ngb-highlight> span)
是否有更好的策略来选择这些元素?
答案 0 :(得分:0)
我认为您可以尝试长时间睡眠,然后再单击弹出选项。如果长时间睡眠可以解决您的问题,则说明您的等待功能Index
出现问题,或者您没有给予足够的等待时间。
var provider = new Firebase.auth.GoogleAuthProvider();
provider.setCustomParameters({
prompt: 'select_account'
});
答案 1 :(得分:-1)
您可以按照此处的步骤设置断点并调试代码。 http://www.protractortest.org/#/debugging
可能想验证sendkey是否将启动typeahead弹出窗口,或者是否需要对此元素进行聚焦。