如何 select 量角器中 ng-autocomplete 中的一个元素?

How to select an element in ng-autocomplete in protractor?

通过

传递文本
sendKeys("dublin,south Africa");

无法select自动完成第一个元素。

手动键入您希望测试执行的内容并检查自动完成的元素。您将使用 protractor.ExpectedConditions 等待该元素,然后在发送密钥后单击它。

你需要做两件事:

  1. 输入文字。有时需要按Tab键强制自动完成显示选项
  2. Select适当的下拉选项

C# 示例代码:

fieldElement.ClearAndSendKeys(partialValue);
fieldElement.SendKeys(Keys.Tab);
GetFieldDropdown(completeValue).Click();

GetFielDropdown() 方法的详细信息取决于您的 DOM。这是我正在处理的项目中的一个简化示例:

private IWebElement GetFieldDropdown(string dropdownValue)
{
    return FindElement(By.XPath($"//span[contains(.,'{dropdownValue}')]"));
} 

请注意,如果自动完成显示有延迟,上面的代码将无法正常工作(FindElement 不会 return 一个元素)。您需要等待显示下拉选项,然后才能单击它。

PS - partialValue 和 completeValue 可以相同

问题已解决。

this.checkin = function(text,index){
        element( by.css('[ng-click="showMapTextBox2()"]') ).click();
        // element(by.model("location")).sendKeys(text);
        browser.actions()
        .mouseMove(element(by.model("location"))
        .sendKeys(text))
        .perform().then(function(){
        browser.sleep(500);
        // press the down arrow for the autocomplete item we want to choose
        for(i = 0; i < index ; i++){

            browser.actions().sendKeys(protractor.Key.ARROW_DOWN).perform();
        }
        browser.sleep(500);
        browser.actions().sendKeys(protractor.Key.ENTER).perform();
      });
        browser.sleep(3000);
    };

spec_test代码:

post_text.checkin("new Delhi, India",1);