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();
我正在尝试 运行 此页面上的一些测试 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();