我有一个需要userid密码登录的应用程序。我目前正在使用selenium和java自动化其测试场景,并需要这些测试并行运行。我为自动化测试创建了一个用户ID。但当我并行运行它们时,我会收到随机测试的会话超时错误,执行失败。
我的chromedriver启动是线程安全的,所以这不可能是的问题
与应用程序的开发人员交谈时,我了解到不允许同一用户同时登录,并且上一个打开的会话收到超时错误。我甚至试过隐姓埋名打开它们,但那无济于事。所以目前我认为,对于并行执行:创建并行运行所需的用户数量,并为每个测试类提供独立的userid。
有其他方法来处理这种情况吗?我认为为自动化测试创建几个用户id总是很麻烦的。
您可以为所有的webdriver实例使用一组cookie。为此,创建将从所有线程访问的变量"Set cookie"。
例如,如果您使用一个超类来继承所有测试类,请将静态变量添加到该超类中。
登录操作时,请检查变量是否为null。如果为true,请登录并从webdirver获取cookie。如果为false,则将cookie设置为webdriver,而不进行登录操作。
Set<Cookie> cookies;
cookies =webDriver.manage().getCookies();
cookies.forEach( cookie -> webDriver.manage().addCookie( cookie ) );