首页 > 解决方案 > 有没有办法处理并行硒测试执行的应用程序会话超时?

问题描述

我有一个需要用户名密码登录的应用程序。我目前正在使用 selenium 和 java 自动化其测试场景,并且需要这些测试并行运行。我为自动化测试创建了一个用户 ID。但是当我并行运行它们时,我得到随机测试的会话超时错误并且执行失败。

我的 chromedriver 启动是线程安全的,所以这不是问题

与应用程序的开发人员交谈后,我了解到不允许同时登录同一用户,并且之前打开的会话收到超时错误。我什至尝试过以隐身方式打开它们,但这无济于事。所以目前我相信,对于并行执行:创建我需要并行运行的用户数量,并为每个测试类提供其独立的用户 ID。

有没有其他方法可以处理这种情况?我认为为自动化测试创建多个用户 ID 总是很麻烦。

标签: javaselenium-chromedriver

解决方案


您可以为所有 webdriver 实例使用一组 cookie。为此,请创建将从所有线程访问的变量“Set cookies”。

例如,如果您使用超类继承所有测试类,请将静态变量添加到超类。

在登录操作中,检查变量是否为空。如果为真 - 登录并从 webdirver 获取 cookie。如果为 false,则将 cookie 设置为 webdriver 而不进行登录操作。

Set<Cookie> cookies;
cookies =webDriver.manage().getCookies();
cookies.forEach( cookie -> webDriver.manage().addCookie( cookie ) );

推荐阅读