如何在量角器中选择ng-autocomplete中的元素?

时间:2016-11-25 10:48:43

标签: angularjs autocomplete protractor gulp-protractor protractor-net

通过

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

无法选择自动完成中的第一个元素。

3 个答案:

答案 0 :(得分:1)

问题解决了。

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);

答案 1 :(得分:0)

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

答案 2 :(得分:0)

你需要做两件事:

  1. 输入文字。有时需要按Tab键强制自动完成显示选项
  2. 选择适当的下拉选项
  3. 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不会返回元素)。在点击之前,您需要等待显示下拉选项。

    PS - partialValue和completeValue可以是相同的