java - 如何使用 selenium 处理会话超时
问题描述
我查看了类似问题的一些答案,但找不到满意的答案。
我正在构建自动化框架,我正在运行 200 个测试用例,大约需要 60 分钟才能完成。
应用程序的会话时间超过 30 分钟,因此当我的测试用例运行时,它会在 30 分钟后注销,然后测试用例因为找不到所需的元素而失败。
我想什么登录来处理会话超时:
- 在测试用例编号 # 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;
}
}
推荐阅读
- xamarin - Xamarin HybridWebView 未在 iOS 设备中加载 url
- python - 如何发布 Python 3 无源 RPM?
- facebook-graph-api - 是否有任何功能类似于“标记”但包括非公开帖子的边缘?
- couchbase - N1QL 多重连接和求和查询产生错误的输出
- google-apps-script - 应用程序脚本强制谷歌表格中的特定行高
- winforms - 在许多 .net core 3 windows 窗体应用程序(如 GAC)之间使用相同的 dll
- python - 通过套接字传输大文件
- c# - 使用文档中的公钥验证 XML 文档
- python - 如何在 python 中自动化我的情绪分析
- javascript - 通过 XMLHttpRequest 发送 HTML 表单数据