簡體   English   中英

如何使用硒處理會話超時

[英]How to handle session timeout with selenium

我查看了類似問題的一些答案,但找不到滿意的答案。

我正在構建自動化框架,我正在運行 200 個測試用例,完成大約需要 60 分鍾。

應用程序的會話時間超過 30 分鍾,所以當我的測試用例運行時,它在 30 分鍾后注銷,然后測試用例因為找不到所需元素而失敗。

我想用什么登錄來處理會話超時:

  1. 在測試用例編號 # X 中再次調用登錄方法並檢查是否注銷然后再次登錄但這似乎不是一個好主意,好像明天會話超時時間從 30 分鍾更新為其他時間,我將不得不在其他一些測試用例中調用登錄方法。

2.如果Current time - Test start time >= 30 minute然后檢查系統是否注銷,如果是,則再次登錄。 但是對於這個問題,就像我必須在每種方法或某些特定方法中調用它以每次檢查是否注銷一樣。

所以我正在尋找一些解決方案,它從我的自動化開始就不斷檢查,如果找到注銷窗口,則調用登錄方法。

注意:我正在使用 selenium webdriver、Java、TestNG、Maven 和以下頁面對象模式。

所以我假設您的登錄頁面與實際應用程序中的任何頁面都有不同的 url。 如果您還沒有帶有 testng @BeforeTest 的方法,您可以創建一個方法並在新的或現有的 beforetest 方法中包含以下內容:

if (driver.getCurrentUrl() == "whatever.yourLoginPageUrl.is") {
    //call login method or do whatever you have to do to login

    //If you want to rerun the previous test that probably failed, do that here
}

一個稍微巧妙的方法(我認為)是實現 IRetryAnalyzer 接口並覆蓋重試功能,例如像這樣

public class MyRetry implements IRetryAnalyzer {

@Override
public boolean retry(ITestResult result) {
    if (driver.getCurrentUrl() == "loginPageUrl") {
        //call login function or do whatever you need to to login 
        return true;
    }
    return false;
  }
}

暫無
暫無

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

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