簡體   English   中英

使用Page Factory設計模式在Page Object中第二次調用webelement會導致陳舊的元素異常

[英]Calling a webelement second time in Page Object with Page Factory design pattern gives stale element exception

我們有一個帶有Page Object和Page Factory設計模式的UI框架。 在我的一個Page Object類中,我定義了一個webelement並調用它。 在測試步驟類中,當我在一個頁面上調用此webelement時,一次在另一個頁面中調用該webelement。 下面是我的代碼的樣子

PageObjectClass1:

@FindBy(how=How.XPATH, using="//*[contains(text(),'Successfully')]")
@CacheLookup
public WebElement successMsg;

testStepClass:

//on first page 
PageObjectClass1.successMsg.isDisplayed()

//Then I navigate to some other page and again call this webelement

PageObjectClass1.successMsg.isDisplayed();

在第二次調用它時,webdriver給了我staleElementException。 該xpath是通用xpath,將在每個頁面中使用。 這肯定存在於DOM中,所以不確定為什么會給我這個異常嗎? 如何在每個頁面對象類中都沒有創建此webelement的情況下使用它?

給出的異常是:

org.openqa.selenium.StaleElementReferenceException:陳舊元素引用:元素未附加到頁面文檔

每次更改DOM或什至只是刷新DOM時,所有先前定位的元素都會過時並且不再有效。 元素是否看起來相同(一個新元素)並不重要。

Java ExpectedConditions (目前只有Java)已刷新,以等待在DOM中重繪元素

(new WebDriverWait(driver, 30)).until(ExpectedConditions.refreshed(ExpectedConditions.visibilityOf(successMsg)));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM