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