Java Selenium服务器并行测试错误:会话id无效

Java Selenium服务器并行测试错误:会话id无效,java,selenium,selenium-webdriver,junit,parallel-processing,Java,Selenium,Selenium Webdriver,Junit,Parallel Processing,您好,有人能告诉我在Selenium服务器上运行并行测试时我做错了什么吗? 我在课堂上做了一些简单的平行测试: package tests; import categories.Category1; import com.google.code.tempusfugit.concurrency.ConcurrentTestRunner; import org.junit.Before; import org.junit.Test; import org.junit.experimental.ca

您好,有人能告诉我在Selenium服务器上运行并行测试时我做错了什么吗?
我在课堂上做了一些简单的平行测试:

package tests;

import categories.Category1;
import com.google.code.tempusfugit.concurrency.ConcurrentTestRunner;
import org.junit.Before;
import org.junit.Test;
import org.junit.experimental.categories.Category;
import org.junit.runner.RunWith;

@RunWith(ConcurrentTestRunner.class)
@Category(Category1.class)
public class ParalelTest extends Base
{
    protected String siteUrl = "/waitforit.php";

    @Before
    public void setUp()
    {
        driver.get(baseUrl + siteUrl);
    }

    @Test
    public void test1()
    {
        System.out.println("test1() thread name: " + Thread.currentThread().getName());
    }

    @Test
    public void test2()
    {
        System.out.println("test2() thread name: " + Thread.currentThread().getName());
    }

    @Test
    public void test3()
    {
        System.out.println("test3() thread name: " + Thread.currentThread().getName());
    }

    @Test
    public void test4()
    {
        System.out.println("test4() thread name: " + Thread.currentThread().getName());
    }
}
以下是出现错误的屏幕:

这有什么不对?没有服务器,它可以正常工作

此错误消息

org.openqa.selenium.NoSuchSessionException: no such session
…意味着chromedriver=80.0无法使用Chrome浏览器v80.0启动/生成新的浏览上下文


您的主要问题是所使用的二进制文件之间的版本不兼容,如下所示:

  • 尽管您使用的是最新的Selenium客户端版本3.141.59、Chrome驱动程序版本80.0和Chrome版本v80.0
  • 您的JDK版本是1.8.0_65,非常古老

解决方案 一般的解决办法是:

  • 将JDK升级到最新级别
  • 通过IDE清理项目工作区,并仅使用所需的依赖项重建项目
  • 如果您的基本Web客户端版本太旧,请通过卸载它并安装最新的GA和Web客户端发布版本
  • 重新启动系统
  • 执行
    @测试

更新 但是,无效会话ID错误是服务器无法识别唯一会话标识符时发生的错误。如果会话已被删除或会话ID无效,则会发生这种情况

可以通过以下任一方式删除WebDriver会话:

  • :显式调用
    quit()
    方法时,会显式删除WebDriver会话
  • :当您关闭调用
    close()
    方法的最后一个窗口或选项卡时,WebDriver会话将被隐式删除

参考文献 有关详细讨论,请参见:


我会试试看。但是如果我在一个线程中运行这个测试,它工作得很好……我确实更新了Java JDK,但问题不在Java中,而是在静态WebDriver中,如果某个测试关闭,会导致会话id丢失,并且驱动程序完全关闭。@chamo签出更新的答案并让我知道状态。第一部分不是真的。这不是版本不兼容。移除它,它就可以被接受。