亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

通過 xpath 獲取特定類的最后添加元素到 DOM

通過 xpath 獲取特定類的最后添加元素到 DOM

哈士奇WWW 2021-09-15 10:52:10
我的網站生成任意數量的彈出窗口(請不要評判我的監控策略)。每個彈出窗口都是一個復雜的 div,我最終希望通過 xpath 引用它,但我特別想要添加到 DOM 的最后一個,因為它將是最上面的那個。所以我試過這個//*[@class="popupContent"][last()]我知道我可以試試這個(//*[@class="popupContent"])[2]但我不知道有多少這些彈出窗口。但是在屏幕上同時有多個彈出窗口的情況下,我會得到第一個的引用(我不確定這是否可靠)。這些彈出窗口中的每一個都有一個 popupContainer,但對于這個問題,它是不受限制的。鑒于此類中有多個元素,我如何才能獲得最上面的元素(因此是交互式的)?這些東西不是兄弟姐妹、孩子或彼此的父母。此外,我不知道在任何給定時間頁面上存在多少。除了我知道其中一個內部組件 (popupContent) 的類之外,我也無法控制彈出窗口的內容或結構。如果這是不可能的,請解釋原因。我正在尋找在 Java Selenium 測試環境中兼容的解決方案。請不要jquery。
查看完整描述

3 回答

?
滄海一幻覺

TA貢獻1824條經驗 獲得超5個贊

根據這個問題:Do WebDriver findElements 在其檢索時保留表行順序findElements 保證順序,因此在 Selenium 環境中,我可以從中獲取列表并檢索最后一項。


List<WebElement> popups = findElements(By.classname("popup"));

WebElement activePopup = popups.get(popups.size - 1);


查看完整回答
反對 回復 2021-09-15
?
繁華開滿天機

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;

}


查看完整回答
反對 回復 2021-09-15
?
慕妹3146593

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


查看完整回答
反對 回復 2021-09-15
  • 3 回答
  • 0 關注
  • 263 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號