【问题标题】:Parallel testing using tesng in java using selenium使用 selenium 在 java 中使用 testng 进行并行测试
【发布时间】:2019-03-18 21:57:29
【问题描述】:

实际上,我正在创建一个框架,但在创建它时,我只希望它用于串行执行,但现在我想对方法进行并行测试。 问题是我已将驱动程序实例声明为静态,并且由于静态第二线程无法更改其值。

我正在一个单独的类中创建驱动程序并使用 getter 方法获取它。

现在的问题是,如果我将 Webdrive 设为非静态,那么我将无法在其他类中使用该驱动程序。

即使我尝试扩展类(我在其中创建驱动程序实例),它也会传递一个空值。

所以,基本上我想隔离所有实例,但我不能在本地创建实例到类。 我尝试删除静态变量,但在执行并行执行时,会打开 2 个浏览器实例,但在一个浏览器中执行所有测试用例,而且太并行了

我怎样才能做到这一点?

【问题讨论】:

    标签: java testing selenium-webdriver automation testng


    【解决方案1】:

    您必须为您的应用程序创建类似驱动程序池的东西。您可以从这个池中为您的测试用例启动一堆驱动程序。

    另外,考虑如何取消您的驱动程序实例静态。

    我过去曾尝试过类似的事情:

    public class DriverPool {
    
        public static final int MAX_NUMBER = 5;
    
        private static final Object waitObj = new Object();
        private static AtomicInteger counter = new AtomicInteger(0);
        private static Logger log = Logger.getLogger(DriverPool.class);
    
        private static volatile ThreadLocal<WebDriver> instance = ThreadLocal
                .withInitial(DriverManager::getInstance);
    
        public static synchronized WebDriver getDriver() {
            try {
                while (counter.get() > MAX_NUMBER) {
                    synchronized (waitObj) {
                        waitObj.wait();
                    }
                }
                counter.getAndIncrement();
            } catch (InterruptedException e) {
                log.error(e);
            }
    
            return instance.get();
        }
    
        public static synchronized void closeDriver() {
            WebDriver driver = instance.get();
    
            driver.close();
            driver.quit();
    
            instance.remove();
            counter.decrementAndGet();
            synchronized (waitObj) {
                waitObj.notifyAll();
            }
        }
    }
    

    希望对你有所帮助。

    【讨论】:

    • 我的声望低于 15,所以我的投票会被记录下来,但会在超过 15 时显示。
    • @PrashantJeetSingh 如果声望超过 15,您现在可以投票
    猜你喜欢
    • 2020-05-21
    • 2022-01-23
    • 2021-10-22
    • 2014-04-04
    • 1970-01-01
    • 2016-04-25
    • 2018-03-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多