java - 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());
}
}
那有什么问题?没有服务器它工作正常。
解决方案
此错误消息...
org.openqa.selenium.NoSuchSessionException: no such session
...暗示chromedriver=80.0无法使用Chrome 浏览器 v80.0启动/生成新的浏览上下文。
您的主要问题是您使用的二进制文件之间的版本不兼容,如下所示:
- 尽管您使用的是最新的Selenium Client版本3.141.59、Chrome 驱动程序版本80.0和Chrome版本v80.0。
- 您的JDK 版本是1.8.0_65非常古老。
解决方案
一个通用的解决方案是:
- 将JDK升级到JDK 8u241的最新级别。
- 通过IDE清理项目工作区并仅使用所需的依赖项重建项目。
- 如果您的基本Web Client版本太旧,请通过Revo Uninstaller卸载它并安装最新的 GA 和已发布版本的Web Client。
- 重新启动系统。
- 执行你的
@Test
.
更新
但是,无效会话 ID错误是在服务器无法识别唯一会话标识符时发生的WebDriver 错误。如果会话已被删除或会话 ID 无效,则会发生这种情况。
可以通过以下任一方式删除 WebDriver 会话:
参考
您可以在以下位置找到相关的详细讨论:
推荐阅读
- java - 在 Spring Cloud Sleuth 中跨 CompletableFuture 保持跟踪/跨度
- python - python程序中列表中的排序函数?
- symfony - 无法安装 Symfony
- android - 如何在 NavigationView 中更改 SUBTITLE textAppearance?
- lisp - 试图计算总工资
- php - PHP If Else 控制结构的替代语法
- javascript - 跨度上的 javascript getElementById
- javascript - 其他所有请求的状态 500“错误:无法处理请求”
- php - 创建从数据库中删除数据的函数的困难
- laravel - Laravel 8 axios 获取 - 未经授权