我正在自動化中進行一些自我開發,我撰寫了一個擴展方法來斷言顯示的元素也包括等待。
代碼中沒有顯示錯誤,它構建并運行“正常”,并且成功地從我的 Extensions 類應用到我的頁面物件,然后應用到步驟定義。
我想檢查它是否正確通過/失敗,所以我在登錄測驗中輸入了錯誤的密碼以確認它失敗,但它通過就像它成功登錄一樣。我已經仔細檢查了我正在使用的元素只有在登錄后才會出現,所以這讓我認為擴展方法是一個可能的問題。
這看起來對嗎?
我的擴展(在擴展類中):
public static bool IsDisplayed(this IWebDriver driver, By by, int timeoutInSeconds = 10)
{
try
{
return driver.FindElement(by, timeoutInSeconds).Displayed;
}
catch (Exception)
{
return false;
}
}
應用于頁面物件中的元素:
public void HomePageIsDisplayed()
{
_driver.IsDisplayed(TrelloHomeLogo);
}
在步驟定義中的應用:
[Then(@"it logs in sucessfully")]
public void ThenItLogsInSucessfully()
{
_homePage.HomePageIsDisplayed();
}
TIA
uj5u.com熱心網友回復:
找到了這個問題的答案,所以我想我會為可能有同樣問題的其他人自己回答......
當我試圖斷言某些東西被顯示時,我需要我的方法來回傳一些東西,但它不能,因為它是一個 void 而不是一個布林值(因為沒有看到這個而自己捂臉)。
擴展很好,但是頁面物件和步驟定義的變化如下......
頁面物件:
public bool HomePageIsDisplayed()
{
return _driver.IsDisplayed(TrelloHomeLogo);
}
步驟定義:
[Then(@"it logs in sucessfully")]
public void ThenItLogsInSucessfully()
{
Assert.True(_homePage.HomePageIsDisplayed(), "Home page should be displayed");
}
步驟定義中的那個字串是可選的,但是如果測驗失敗,我已經添加了它以獲取更多資訊,所以我確切地知道測驗集合中失敗的地方。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/516089.html
標籤:C#硒扩展方法
