3 回答

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超5個(gè)贊
根據(jù)這個(gè)問(wèn)題:Do WebDriver findElements 在其檢索時(shí)保留表行順序findElements 保證順序,因此在 Selenium 環(huán)境中,我可以從中獲取列表并檢索最后一項(xiàng)。
List<WebElement> popups = findElements(By.classname("popup"));
WebElement activePopup = popups.get(popups.size - 1);

TA貢獻(xiàn)1816條經(jīng)驗(yàn) 獲得超4個(gè)贊
另一種方法可能是查找具有最高 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貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超9個(gè)贊
Xpath(//*[@class="popupContent"])[last()]和下面的代碼應(yīng)該給你相同的結(jié)果 - DOM 中的最后一個(gè)元素:
List<WebElement> popups = driver.findElements(By.className("popup"));
WebElement activePopup = popups.get(popups.size - 1);
如果最后一個(gè)元素不是最上面的元素,請(qǐng)嘗試獲取焦點(diǎn)元素:
WebElement focused = driver.switchTo().activeElement();
if (focused.getAttribute("class").equals("popupContent"))
//my active/interactive popup
您可以檢查最后一個(gè)現(xiàn)在是否處于活動(dòng)狀態(tài):
WebElement lastOne = driver.findElement(By.xpath("(//*[@class="popupContent"])[last()]"));
if (lastOne.equals(driver.switchTo().activeElement()))
//last one is active
添加回答
舉報(bào)