如何从自动完成文本框的自动建议中获取文本?

How to get the text from the auto suggestion of the auto complete text box?

我的要求是我想select自动完成文本框中自动建议的特定名称

所以在这里我只知道如何通过使用鼠标向下获取名称来实现这个但我知道这不是一个好的解决方案因为我们不保证自动建议与一直在浏览器中。

所以如果有人知道如何使用 Junit 在 Selenium Web Driver 中获取自动完成文本框的自动建议文本名称(这里我使用 Selenium WebDriver 中的 Junit 来开发自动化测试脚本).

我的代码:

driver.findElement("//input[@id='phSearchInput']").SendKeys(KEYS.ARROW_DOWN);
Thread.sleep(1000);
driver.findElement("//input[@id='phSearchInput']").SendKeys(KEYS.ARROW_DOWN);
Thread.sleep(1000);
driver.findElement("//input[@id='phSearchInput']").SendKeys(KEYS.ENTER);

Here the above code is only working for my correct option is shows as the second option of the auto-suggested texts.

所以这就是为什么我需要如何在自动完成文本框的自动建议中获取文本名称。

由于我正在使用JUnit开发自动化测试脚本,请以JUnit形式给出我的问题的解决方案。

谢谢

自动建议框 HTML 与页面上的其他任何内容一样。创建一个查找自动建议面板的定位器,然后解析内容。一旦弄清楚了结构,就可以得到你需要的文本,然后断言它是正确的。

我无法从您的屏幕截图中看到完整的 HTML,但您可以看到该列表包含在 HTML UL 中。 UL 是容器,每个 LI 是下拉列表中的一个列表项。您可以使用该信息来执行类似

的操作
ul.autoCompleteGroup > li

获取所有列表项。我看不到里面有什么,但在某些时候你应该可以使用 .getText() 来获取自动建议项目。从那里你只需将你从列表中删除的内容与你期望的断言进行比较。

在这种情况下,您可以使用查找元素功能。所以你可以说:

List<WebElement> elements = driver.findElements(by.xpath("//a[@class='autoCompleteRowLin‌​k']"); 

然后是 您可以使用 getText 获取每个列表项的确切文本。然后你可以用预期值断言它

请尝试以下代码

public void selectAutoCompleteItem(String itemText) {
    String xpathPattern = "//div[@id='phSearchInput_autoCompleteBoxId']" +
                          "//ul/li/a[.='%s')]";

    String xpathExp = String.format(xpathPattern, itemText);

    driver.findElement(By.xpath(xpathExp)).click();
}