首页 > 解决方案 > Selenium 服务器并行测试错误:无效的会话 ID

问题描述

嗨,有人可以告诉我在 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());
    }
}

这是有错误的屏幕: 在此处输入图像描述

那有什么问题?没有服务器它工作正常。

标签: javaseleniumselenium-webdriverjunitparallel-processing

解决方案


此错误消息...

org.openqa.selenium.NoSuchSessionException: no such session

...暗示chromedriver=80.0无法使用Chrome 浏览器 v80.0启动/生成新的浏览上下文


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

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

解决方案

一个通用的解决方案是:

  • 将JDK升级到JDK 8u241的最新级别。
  • 通过IDE清理项目工作区并仅使用所需的依赖项重建项目。
  • 如果您的基本Web Client版本太旧,请通过Revo Uninstaller卸载它并安装最新的 GA 和已发布版本的Web Client
  • 重新启动系统
  • 执行你的@Test.

更新

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

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

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

参考

您可以在以下位置找到相关的详细讨论:


推荐阅读