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

时间:2018-01-08 11:14:06

标签: java selenium selenium-webdriver junit browser-automation

enter image description here我的要求是我想从自动填充文本框中的自动建议中选择特定名称

所以在这里我只知道如何通过使用鼠标来获得这个名称但是我知道它并不是一个很好的解决方案,因为我们不能给自动保证建议与浏览器中的所有时间相同。

因此,如果有人知道如何使用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);
  

这里上面的代码只适用于我的正确选项显示为   自动建议文本的第二个选项。

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

请将解决方案作为JUnit表单提交给我的问题,因为我正在使用JUnit来开发自动化测试脚本。

由于

3 个答案:

答案 0 :(得分:1)

自动建议框与页面上的任何其他内容一样是HTML。创建一个找到自动建议面板的定位器,然后解析内容。找到结构后,您可以获得所需的文本,然后断言它是正确的。

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

的操作
ul.autoCompleteGroup > li

获取所有列表项。我无法看到其中的内容,但在某些时候,您应该可以使用.getText()来获取自动推荐项。从那里你只需将你从列表中删除的内容与你对Assert所期望的内容进行比较。

答案 1 :(得分:1)

请尝试以下代码

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

答案 2 :(得分:0)

在这种情况下,您可以使用findelements功能。所以你可以说:

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

然后呢 每个列表项都可以使用getText来获取确切的文本。然后你可以用期望值

来断言它