2 回答

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

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