3 回答
TA贡献1824条经验 获得超5个赞
根据这个问题:Do WebDriver findElements 在其检索时保留表行顺序findElements 保证顺序,因此在 Selenium 环境中,我可以从中获取列表并检索最后一项。
List<WebElement> popups = findElements(By.classname("popup"));
WebElement activePopup = popups.get(popups.size - 1);
TA贡献1816条经验 获得超4个赞
另一种方法可能是查找具有最高 z-index 值的弹出窗口:
private WebElement getTopPopUp() {
List<WebElement> allPopUps = driver.findElements(By.classname("popup"));
WebElement topPopUp = allPopUs.get(0);
for(WebElement popUp : allPopUs) {
if(Integer.parseInt(popUp.getCssValue("z-index")) > Integer.parseInt(topPopUp.getCssValue("z-index"))) {
topPopUp = popUp;
}
}
return topPopUp;
}
TA贡献1820条经验 获得超9个赞
Xpath(//*[@class="popupContent"])[last()]和下面的代码应该给你相同的结果 - DOM 中的最后一个元素:
List<WebElement> popups = driver.findElements(By.className("popup"));
WebElement activePopup = popups.get(popups.size - 1);
如果最后一个元素不是最上面的元素,请尝试获取焦点元素:
WebElement focused = driver.switchTo().activeElement();
if (focused.getAttribute("class").equals("popupContent"))
//my active/interactive popup
您可以检查最后一个现在是否处于活动状态:
WebElement lastOne = driver.findElement(By.xpath("(//*[@class="popupContent"])[last()]"));
if (lastOne.equals(driver.switchTo().activeElement()))
//last one is active
添加回答
举报