【问题标题】:The most optimized approach to handle common Webdriver functions library in multiple threads in parallel execution in Java在 Java 中并行执行的多线程中处理常见 Webdriver 函数库的最优化方法
【发布时间】:2021-10-13 17:35:21
【问题描述】:

我有下面的类,它具有可重用的 WebDriver 功能。

我将所有方法设为静态,因为没有创建对象,从我的测试用例类中我可以访问它们。还要记住“在静态方法上同步时,监视器属于该类。”

public  class WebCommand {

    //Go to Url
    public  static void goToUrl(String url,WebDriver driver) {
        driver.get(url);
    }

}

所以从我的 Testcase 类中,我直接调用这个方法,使用 private static ThreadLocal driver = new ThreadLocal();

 WebCommand.goToUrl("https://blazedemo.com/login",driver);

由于我在多个线程上并行运行,因此要对 WebCommand 类中的方法进行线程安全,最好的方法应该是什么?

即使我将方法设置为非静态的,据我所知,它也不能保证线程安全。任何帮助将不胜感激。

  public  void goToUrl(String url,WebDriver driver) {
            driver.get(url);
        }
//Then from TestCase class, call as WebCommand instance -new WebCommand ();

【问题讨论】:

  • 我添加了一个简短的答案,但也许我不完全确定您对线程安全的担忧是什么。您认为此代码存在特定问题吗?如果您更新问题并提供更多详细信息并回复我的评论,我可以更新答案。
  • It;'s only pass the parameters so far 我没有看到任何问题,因为我只有很少的测试用例,谢谢你的回答,我也赞成..我会等待接受它社区的回答很少。

标签: java multithreading selenium webdriver


【解决方案1】:

由于该方法不对共享数据进行操作,只传递参数,因此已经是线程安全的,假设driver实例不是线程间共享的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-31
    • 1970-01-01
    • 2017-09-28
    • 1970-01-01
    • 1970-01-01
    • 2011-02-10
    相关资源
    最近更新 更多