2

通过文本传递

sendKeys("dublin,south Africa");

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

4

3 回答 3

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

规格测试代码:

post_text.checkin("new Delhi, India",1);
于 2016-12-05T04:55:41.783 回答
0

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

于 2016-11-27T06:50:55.680 回答
0

你需要做两件事:

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

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 可以相同

于 2016-11-30T02:52:31.420 回答