【问题标题】:How to store runtime variables in parallel execution selenium java ?如何在并行执行 selenium java 中存储运行时变量?
【发布时间】:2017-10-24 07:00:23
【问题描述】:

实际上,我需要捕获运行时值并将其传递给进一步执行。在顺序执行中,它工作得很好,但是当我进行远程执行(在酱实验室中)时,在那个时刻,运行时值在浏览器之间互换,这会导致失败。 (因为每个浏览器都必须获得单独的值)

你能帮我看看这个吗?

谢谢,克里斯。

【问题讨论】:

  • 到目前为止你有什么尝试?
  • 我认为您可以为同步返回值的测试方法设置优先级。 guru99.com/test-case-priority-testng.html
  • 感谢您的回复 Pradeep & Loki .. 得到了解决方案,实际上在我们的场景中,相同的测试用例在 10 个浏览器中运行,在运行时我们捕获一个 id 并传递给进一步执行,正如引用的顺序工作很好,但在并行执行时,id 的变量与另一个失败的变量重叠,但现在使用线程局部变量,这是固定的

标签: java selenium parallel-processing execution


【解决方案1】:

谢谢..!得到解决方案与 ThreadLocal 变量概念一起使用

我的框架中的大多数环境特定值都定义为 STATIC。

在 Java 中,静态变量用于在线程之间共享数据,这意味着这些变量在线程之间是相同的。在这种情况下,当第二个线程为静态变量赋值时,它会覆盖第一个线程设置的值。这会导致问题。

为了克服上述问题,我们可以考虑两种方法。

1) java 中的所有局部变量都存储在堆栈内存中,每个线程都有自己的堆栈。所以如果把变量改成局部变量,问题就解决了。

2) 在现有框架中使用上述方法会破坏许多依赖项。而且将变量设置为本地变量总是不容易的。所以我们必须寻找更好的解决方案。对于这种情况,我们在 java 中有 ThreadLocal 变量。

http://learn-testing-urself.blogspot.in/2015/05/importance-of-threadlocal-in-parallel.html

【讨论】:

    猜你喜欢
    • 2017-05-16
    • 1970-01-01
    • 1970-01-01
    • 2021-05-14
    相关资源
    最近更新 更多