Javascript 量角器:从弹出值中选择元素

Javascript 量角器:从弹出值中选择元素,javascript,selenium,protractor,Javascript,Selenium,Protractor,我们有一些文本框,需要从弹出列表中选择值。元素和弹出窗口如下所示: 相关的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"

我们有一些文本框,需要从弹出列表中选择值。元素和弹出窗口如下所示:

相关的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>
它们均未工作,但收到以下错误消息:

NoSuchElementError:使用locator:By(css选择器,#ngb-typeahead-2-0>ngb highlight>span)未找到任何元素


是否有更好的策略来选择这些要素

我想你可以试着在点击弹出选项之前睡个长觉。如果长时间睡眠可以解决您的问题,则证明您的等待函数
waitForElementVisibility
存在问题,或者您没有给予足够的等待时间

await $('input#esySiteName').sendKeys('Bull');

await browser.sleep(15000) 

await $('#ngb-typeahead-2-0 > ngb-highlight > span').click()

您可以按照此处的步骤设置断点并调试代码。


可能需要验证sendkeys是否会启动typeahead弹出窗口,或者是否需要聚焦元素以实现此目的。

您可能需要查看hetznercloud的量角器测试助手中的waitForWindowCount。然后,您可能需要获得弹出窗口的句柄并切换到它,然后才能单击其中的任何内容。
await $('input#esySiteName').sendKeys('Bull');

await browser.sleep(15000) 

await $('#ngb-typeahead-2-0 > ngb-highlight > span').click()