java webdriver bootstrap 下拉菜单选择 div>p 项

java webdriver bootstrap dropdown selecting div>p item

我正在尝试 运行 此页面上的一些测试 http://www.funding-portal.eu/ncp-search/

有 2 个输入框使用 bootstrap 下拉菜单,其中填充了包含文本输入的项目。

我的测试输入一个字母来创建一个列表,然后将返回的下拉列表中的所有标题存储在一个数组中,它将从中随机选择一个项目并将该文本放回输入字段。

这在第二个下拉菜单中工作正常,但在第一个下拉菜单中却不行。

还需要能够单击列表中的项目,以便打开下面的任何相关项目。我在点击部分遇到了真正的问题。这是我试过的代码:

        driver.findElement(By.id("programmeFocusAreaPicker")).clear();
        driver.findElement(By.id("programmeFocusAreaPicker")).sendKeys("a");

        dropdown = driver.findElements(By.cssSelector("div.tt-suggestion>p"));
        count = dropdown.size();

        System.out.println("Info,Options available = "+count);
        System.out.println("Info,Start looping");

        int a = 0;
        String[] itemArray = new String[count];
        count--;
        int rand1 = rand.nextInt((count - 0) + 1) + 0;

        for (WebElement dd : dropdown) {
            itemArray[a] = dd.getText();
            a++;
        }
        System.out.println("Info,sendkeys = " + itemArray[rand1]);
        driver.findElement(By.id("programmeFocusAreaPicker")).clear();
        driver.findElement(By.id("programmeFocusAreaPicker")).sendKeys(itemArray[rand1]);

        Actions cursor = new Actions(driver);
        WebElement item = driver.findElement(By.cssSelector("div.tt-suggestion>p"));
        cursor.moveToElement(item);
        cursor.click(item);

我之前曾尝试点击第一个返回的项目而不必重复 clear&sendKeys。

我花了很多时间寻找这个问题的答案,所以如果它被视为重复,我深表歉意。

您没有使用用于执行 Actions class 任何功能的 build().perform() 函数。 用以下步骤替换代码中的最后几行。

    Actions cursor = new Actions(driver);
    WebElement item = driver.findElement(By.cssSelector("div.tt-suggestion>p"));
    cursor.moveToElement(item);
    cursor.click(item).build().perform();