java - 有没有办法处理并行硒测试执行的应用程序会话超时?
问题描述
我有一个需要用户名密码登录的应用程序。我目前正在使用 selenium 和 java 自动化其测试场景,并且需要这些测试并行运行。我为自动化测试创建了一个用户 ID。但是当我并行运行它们时,我得到随机测试的会话超时错误并且执行失败。
我的 chromedriver 启动是线程安全的,所以这不是问题
与应用程序的开发人员交谈后,我了解到不允许同时登录同一用户,并且之前打开的会话收到超时错误。我什至尝试过以隐身方式打开它们,但这无济于事。所以目前我相信,对于并行执行:创建我需要并行运行的用户数量,并为每个测试类提供其独立的用户 ID。
有没有其他方法可以处理这种情况?我认为为自动化测试创建多个用户 ID 总是很麻烦。
解决方案
您可以为所有 webdriver 实例使用一组 cookie。为此,请创建将从所有线程访问的变量“Set cookies”。
例如,如果您使用超类继承所有测试类,请将静态变量添加到超类。
在登录操作中,检查变量是否为空。如果为真 - 登录并从 webdirver 获取 cookie。如果为 false,则将 cookie 设置为 webdriver 而不进行登录操作。
Set<Cookie> cookies;
cookies =webDriver.manage().getCookies();
cookies.forEach( cookie -> webDriver.manage().addCookie( cookie ) );
推荐阅读
- tensorflow - 召回和精度无法正常工作(keras)
- javascript - 仅在需要时显示滚动
- wordpress - php curl中的“错误代码400错误请求”响应
- python - 如何可视化每个标签的前 20 个最常用词
- react-native - React Native Expo:自动播放音频声音
- javascript - 获取 TypeError:复选框未定义
- django - django CSS & Javascript 没有加载到 HTML 文件中?,错误 404?
- spring - 最好返回通用响应实体类型来处理错误或抛出异常
- python - 如何调整 .aim 文件的大小以使所有文件都相同?
- python - 美丽的汤没有加载整个页面