我正在网页上运行测试,该网页可能包含也可能不包含特定元素。 过程如下:我填写表格,然后单击“搜索”按钮。当浏览器打开一个新的网址时,我需要选择一个element_1,但如果它不存在,我必须选择element_2。
WebElement element = driver.findElement(By.xpath("//....")) || driver.findElement(By.xpath("//..."));
element.click();
//这样不行,还有其他办法吗?是否可以不尝试并捕获?
最佳答案
使用 driver.findElement() 进行隐式等待。因此,即使第二个元素出现,测试也会等待一段时间。相反,在 WebDriverWait 中使用 findElements() 可能是更好的解决方案。
WebDriverWait wait = new WebDriverWait(driver, 10);
// Wait for one element to be available
wait.until(new Predicate<WebDriver>() {
@Override public boolean apply(WebDriver driver) {
return driver.findElements(By.cssSelector("xpath1")).size() > 0
|| driver.findElements(By.cssSelector("xpath2")).size() > 0;
}
});
// Get the element
WebElement e = null;
if (driver.findElements(By.cssSelector("xpath1")).size() > 0)
e = driver.findElements(By.cssSelector("xpath1")).get(0);
else if (driver.findElements(By.cssSelector("xpath2")).size() > 0)
e = driver.findElements(By.cssSelector("xpath1")).get(0);
if (e != null)
e.click();
关于java - 如何使用 Selenium WebDriver 选择网页上的 2 个元素之一?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15493393/