当前位置: 首页 > 知识库问答 >
问题:

SeleniumGrid2自定义maxSession在运行testng套件(parallel=“classes”)时似乎不能按预期工作

司徒阳曜
2023-03-14

这是我的testng.xml

`<suite name="Test Suite">
<test name="test" parallel="classes" thread-count="2" preserve-order="true">
<classes>
<class name="Test1"/>
<class name="Test2"/>
<class name="Test3"/>
<class name="Test4"/>
<class name="Test5"/>
</classes>
</test>
</suite>`

hub:java-jar selenium-server-standalone-2.43.1.jar-role hub-maxsession=2

节点:java-jar selenium-server-standalone-2.43.1.jar-dwebdriver.chrome.driver=%chromedriverpath%-role webdriver-hub http://%hubipandport%/grid/register-maxsession 2-browser“platform=%platform%,javascriptenabled=true,browsername=%browsername%,takesscreenshot=true,

问题:

当我运行两个具有2个maxSession计数的测试类时,它工作得很好(与5,10,15..)

但是当我添加的测试超过指定的maxSession时,假设我又添加了三个测试,现在测试用两个浏览器生成,获取LandingPage但不会继续。

我在这里做错了什么?

共有1个答案

阎扬
2023-03-14

显然,我没有使用ThreadLocal,而且我的驱动程序实例也是静态的。开始使用ThreadLocal并解决了问题。

public void instantiateDriverObject(String browser) {
DriverFactory factory = new DriverFactory();
driver = factory.createInstance(browser);
driverThread = new ThreadLocal<WebDriver>() {
@Override
protected WebDriver initialValue() {
webDriverPool.add(driver);
return driver;
}
};
}
 类似资料:
  • 实际-我看到的行为是它在1个节点上一次依次运行一个会话(FireFox浏览器)中的所有测试。 预期-本例中的类“IntegrationTest”有20个方法(@Test)。我希望看到该类中有5个测试被选中,并在1节点上的5个FireFox会话中并行运行。 这是我的testng套件文件。线程数为1是有意义的,因为我只想运行一个类。 这是我在中心和节点上运行的grid2命令。 枢纽命令- 节点命令-

  • 我有3个测试类,由我想要并行运行的多个测试方法组成。我使用ThreadLocal来隔离每个线程的webdriver实例。当我按顺序运行测试时,一切看起来都很好,但是当我并行运行它们时,问题就出现了。下面是我的套件文件 我在@Beforeclass中初始化Web驱动程序BrowserClient.java如下。 这里使用的类即BrowserFactory.java 驱动程序工厂.java 我的测试类

  • 问题内容: 问题 我有一个,以及一个带有属性的数据库对象列表,我想检查一下我的映射中的键是否等于数据库中的任何s- 如果是,请用填充。 代码看起来像这样: 但是,即使我确定有时会在该电话中,该电话始终会返回false。 调查中 作为健全性检查,我打印了日期的长值以及呼叫和呼叫的结果: 结果: 题 1)不应该和同意吗?(我假设至少应执行的建议)。 2)该医生说这个: 因此,当且仅当getTime方法

  • 因此,当我试图在程序中实现JTable时,我一直在阅读Java的“如何使用表”。我想要的是从数据库中获取一个字符串值列表,然后按列名和行名对它们进行排序。现在我知道没有像列那样的默认行标头,所以我通过将我的第一列设置为“行标头”来避开这个问题。因此,我决定为我的Jtable创建一个自定义表模型,以便正确地对数据进行排序(数据存储在字符串向量的向量中&列/行名分别作为字符串向量),但我遇到的只是问题

  • 问题内容: 我有一个自定义运行程序,它通过与其他硬件上运行的Junit服务器的套接字连接来交付Junit测试。测试按预期目标运行: 但是,当我添加以下 元素时… 没有任何东西被运送到硬件,这使我相信在 的上下文中没有使用我的@RunWith(com.company.name.RemoteTestCaseRunner.class)批注。是否有我遗忘的事情,或者必须另外执行才能调用@RunWith注释

  • 问题内容: 我已经为此奋斗了2天,尽我所能用Google搜索和stackoverflow,但是我无法解决。 我正在构建一个简单的节点应用程序(+ Express + Mongoose),其登录页面重定向到主页。这是我的服务器JS代码: 登录页面向发出POST请求,在此验证发布的数据。这可行。我可以在Node控制台中看到“我们在这里:’/ credentials’”。 然后是问题:res.redir

  • 问题内容: 根据JavaDoc for ,该函数在比较期间不考虑比例。 现在,我有一个测试用例,看起来像这样: 我希望函数返回的值是10,小数位数为10。打印该值可显示预期的结果。但是该功能似乎并未按照我认为的方式工作。 这里发生了什么? 问题答案: 并 没有 代表0.7。 它代表0.69999999999999999999555910790149937383830547332763671875(

  • 问题内容: 我是否错过了明显痛苦的事情?还是世界上没有人真正使用java.util.BitSet? 以下测试失败: 我真的不清楚,为什么我没有得到长度为2的BitSet和值为10的结果。我偷看了java.util.BitSet的源代码,并且在随意检查时似乎无法对两者进行足够的区分。设置为false且从未设置为任何值… (请注意,在构造函数中显式设置BitSet的大小无效,例如: 问题答案: 人们确