当我们在定位元素时,除非是通过绝对路径,否则 都有可能找到不止一个元素,这是因为DOM树 包含前台不可见的元素,所以我们要通过一定的方式 去获取在页面上可见的元素,Selenium提供了一个 方法isDisplayed()来判断元素是否可见,但是没有方法来获取指定的所有可见元素。所以想写个方法
protected List<WebElement> visibleElements;
//通过WebDriver 获取整个页面指定的可见元素
public List<WebElement> getVisibleElements(WebDriver driver, By by) throws Exception {
visibleElements = new ArrayList<WebElement>();
List<WebElement> allElements = driver.findElements(by);
for (WebElement element : allElements) {
if (element.isDisplayed()) {
visibleElements.add(element);
}
}
return visibleElements;
}
//通过元素查找元素下指定的可见元素
public List<WebElement> getVisibleElements(WebElement fatherElement, By by) {
visibleElements = new ArrayList<WebElement>();
List<WebElement> allElements = fatherElement.findElements(by);
for (WebElement element : allElements) {
if (element.isDisplayed()) {
visibleElements.add(element);
}
}
return visibleElements;
}