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

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

檢查元素是否存在于 WebElement 對象中

檢查元素是否存在于 WebElement 對象中

喵喔喔 2023-02-23 16:42:03
我需要檢查 Java Selenium 頁面上是否存在元素。不幸的是,所有關于搜索的解釋都是使用 FindElements(By) 進行的,但我有一個將 WebElement 直接傳遞給方法的結構,因為我的元素已經由 PageFactory 發送。所以我有一個結構如下:public static void verifyElementPresentStatus(WebElement targetElement, String elementName) {    Boolean elementPresent = MISSING PART    StepLogger.subVerification(elementName + " should be present");    Assert.assertTrue(            elementPresent,            ValidationHelper.getPresentValidation(elementName)    );}并像這樣調用方法ExpectationHelper.verifyElementPresentStatus(            Pages.HomePage().homeHeader,            Pages.HomePageConstants().pageHeaderText    );任何人都知道這樣做的方法嗎?
查看完整描述

2 回答

?
慕的地10843

TA貢獻1785條經驗 獲得超8個贊

您不能編寫接受 WebElement 作為參數的方法,并檢查它是否在所有情況下都存在。這是因為您可以引用不存在的 WebElement 對象的唯一情況是它以前存在,然后從 DOM 中刪除(“陳舊元素”)。為了第一次確定元素是否存在,您只能通過接受 By 參數而不是 WebElement 來做到這一點。這樣您就可以使用 findElements 并檢查 count > 0。



查看完整回答
反對 回復 2023-02-23
?
慕虎7371278

TA貢獻1802條經驗 獲得超4個贊

根據WebElement 接口的文檔,其所有方法調用

將進行新鮮度檢查以確保元素引用仍然有效。這實質上決定了該元素是否仍然附加到 DOM。如果此測試失敗,則會拋出 StaleElementReferenceException,并且以后對該實例的所有調用都將失敗。

由于您收到的 webElement 沒有任何驗證,請考慮執行中性方法調用(沒有任何副作用)來檢查元素是否為StaleElementReferenceException.?例如,您可以調用getSize()方法。你的方法邏輯應該看起來像這樣。

public static void verifyElementPresentStatus(WebElement targetElement, String elementName) {

? Boolean elementPresent = true;

? try {

? ? elementPresent = targetElement.getSize();

? } catch (StaleElementReferenceException e) {

? ? elementPresent = false;

? }

? StepLogger.subVerification(elementName + " should be present");

? Assert.assertTrue(elementPresent, ValidationHelper.getPresentValidation(elementName));

}


查看完整回答
反對 回復 2023-02-23
  • 2 回答
  • 0 關注
  • 147 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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