在設置此問題之前,我已經查看了StaleElementReference Exception in PageFactory,並且沒有任何答案似乎解決了我的問題。在刷新頁面後,硒不能再點擊按鈕
我有問題解決錯誤消息
OpenQA.Selenium.StaleElementReferenceException:陳舊元件 參考:元件未連接到頁文檔。
我確切地知道是什麼導致問題,但無法找到解決它的方法。
代碼如下,但作爲概述。
- 我去給帳戶
- 更新地址欄,然後單擊地址更新按鈕,
- 刷新瀏覽器,
- 確認該地址已經被更新。
然後我通過重新輸入原始地址數據進行清理。但是,當我嘗試點擊更新地址按鈕時,它顯示爲不再附加到頁面(雖然它是可見的)。我正在使用Page Factory Model作爲我的框架。我明白,要解決這個錯誤,我需要再次找到元素,但我無法解決如何做到這一點。無論我使用什麼方法,我都需要能夠將其應用於整個框架,因爲我有一種直覺,它會在我正在測試的網站上反覆出現。
我的代碼
測試引發錯誤。
[Test]
public void Change_Account_Address()
{
Page.headerView.ClickOnLogin();
Page.loginPage.EnterUserNameandPasword(_testName);
Page.accountPage.ConfirmAtAccountPage(_testName);
Page.accountPage.UpdateAccountAddress(_testName);
Browsers.Refresh();
Page.accountPage.ConfirmAddressisUpdated(_testName);
Page.accountPage.UpdateAccountAddress("ResetAccountAddress"); - Error occurs on this step.
Page.accountPage.LogOut();
}
帳戶頁面的按鈕,導致錯誤
[FindsBy(How = How.CssSelector, Using = "#myAccountForm > div:nth-child(3) > button")]
[CacheLookup]
private IWebElement UpdateDetails { get; set; }
使用該按鈕在測試
public void UpdateAccountAddress(string testName)
{
var testData = ExcelDataAccess.GetTestData(testName);
AddressLine1.EnterText(testData.AddressLine1, "AddressLine1");
AddressLine2.EnterText(testData.AddressLine2, "AddressLine2");
AddressLine3.EnterText(testData.AddressLine3, "AddressLine3");
City.EnterText(testData.City, "City");
AccountPostcode.EnterText(testData.AccountPostcode, "AccountPostcode");
UpdateDetails.ClickOnIt("UpdateButton");
}
點擊它擴展
public static void ClickOnIt(this IWebElement element, string elementName)
{
element.Click();
Console.WriteLine("Clicked on " + elementName);
}
最後我的頁面類
public class Page
{
private static T GetPage<T>() where T : new()
{
var page = new T();
PageFactory.InitElements(Browsers.getDriver, page);
return page;
}
public static AccountPage accountPage
{
get
{
return GetPage<AccountPage>();
}
}
}
您是否嘗試在元素之前加入一些等待方法(** Update **按鈕在這裏)? –
[PageFactory中的StaleElementReference異常]的可能重複(https://stackoverflow.com/questions/44838538/staleelementreference-exception-in-pagefactory) – DebanjanB
雖然https://stackoverflow.com/questions/44838538/staleelementreference-exception-in -pagefactory是一個類似的問題,非該頁面上顯示的解決方案正在爲我工作。 –