我无法单击组合框内的元素

时间:2018-10-22 21:51:20

标签: selenium selenium-webdriver

我使用xpath获得了列表(ul)的内容,并将其放入List类型的变量中。然后,我循环了变量元素,并让它们打印列表的内容。

日食显示列表,列表中包含所有选项(li)。在循环内部,我做了一个IF查找GEOCF选项,如果找到了,脚本将单击。即使存在GEOCF选项,我也无法单击它,例程进入ELSE。

它遵循源代码和图像打印。

public void selecionarAuditoriaNacional() throws Exception {

    WebElement findElement = driver.findElement(By.id("consultarUnidadeAuditoria"));
    findElement.click();

    List<WebElement> elementos = driver.findElements(By.xpath("//div[@class = 'ui-selectonemenu-items-wrapper']/ul"));

    for (WebElement elementosGrid : elementos) {

        System.out.println(elementosGrid.getText());

        if (elementosGrid.equals("GEOCF")) {

            elementosGrid.click();

        } else {

            System.out.println("Erro");

        }

    }

}

ComboBox

Console Eclipse

1 个答案:

答案 0 :(得分:1)

GEOCF是一个列表元素,位于li标记中。但是,您在元素列表中获得了所有ul标签。

如果条件从li更改为elementosGrid.equals("GEOCF"),请更改xpath定位符以找到elementosGrid.getText().equals("GEOCF")和一个错字

List<WebElement> elementos = driver.findElements(By.xpath("//div[@class = 'ui-selectonemenu-items-wrapper']/ul/li"));

for (WebElement elementosGrid : elementos) {

    System.out.println(elementosGrid.getText());

    if (elementosGrid.getText().equals("GEOCF")) {

        elementosGrid.click();

    } else {

        System.out.println("Erro");

    }

}

您可以删除整个循环&if并使用带有单个xpath的文本处理find元素

public void selecionarAuditoriaNacional() throws Exception {

  WebElement findElement = driver.findElement(By.id("consultarUnidadeAuditoria"));
  findElement.click();

  WebDriverWait wait = new WebDriverWait (driver, 60);
  elementosGrid=wait.until(ExpectedConditions.VisibilityofElementLocated(By.xpath("//div[@class = 'ui-selectonemenu-items-wrapper']/ul/li[text() = 'GEOFC']")));
  elementosGrid.click()
}