java webdriver bootstrap下拉列表选择div> p项目

时间:2015-03-27 12:24:21

标签: java twitter-bootstrap selenium-webdriver

我正在尝试在此页http://www.funding-portal.eu/ncp-search/

上运行一些测试

有2个输入框使用引导下拉列表,其中填充了包含文本输入的项目。

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

这在第二个下拉列表中运行正常但不是第一个。

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

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

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

我花了很多时间寻找答案,所以如果被视为重复,我会道歉。

1 个答案:

答案 0 :(得分:0)

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

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