我使用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");
}
}
}
答案 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()
}