我正在尝试在此页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。
我花了很多时间寻找答案,所以如果被视为重复,我会道歉。
答案 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();