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
添加回答
舉報