getGauge: как управлять отдельными драйверами селена при параллельном выполнении сценария?

I have two specs in BDD. There's samples how to manage a single selenium driver using a central static variable (example) in a "DriverFactory".

Это хорошо, если вы не запускаете более одной спецификации параллельно. Если вы это сделаете, то разные спецификации запутаются, потому что они используют один и тот же драйвер.

Это действительно потому, что спецификация должна быть сопоставлена ​​с драйвером, а код Java не привязан к спецификации. Другими словами, любая спецификация может вызывать любой код Java. Таким образом, вы не можете создать экземпляр класса, полностью сопоставленного со спецификацией и имеющего локальный драйвер.

Кто-нибудь сталкивался с этим?

Одна из идей, которую необходимо преодолеть, - это иметь "DriverFactory" с массивом драйверов, сопоставленных со спецификациями. Но это означает, что шаг Java, использующий драйвер, должен знать контекст спецификации, в которой он выполняется.


person Amir Rozenberg    schedule 07.04.2018    source источник


Ответы (1)


Я предполагаю, что вы используете Gauge из-за тега [getgauge] и упомянутого примера.

Параллельное выполнение Gauge выполняет все спецификации параллельно. Рекомендуемый способ - не использовать в спецификациях общие состояния / ресурсы и, если необходимо, сделать их потокобезопасными.

Этот пример использует статический Driverfactory.getDriver метод для инициализации нового Driver по запросу. В этой настройке каждая спецификация получит новый экземпляр драйвера. Это помогает в твоем случае?

person Srikanth Venugopalan    schedule 09.04.2018
comment
Спасибо, Срикантх. Я вижу, что драйвер выделяет новый драйвер при запуске пакета. Этот драйвер - статическая переменная. Итак, теперь, если вы запустите спецификации параллельно, у них будет общий драйвер. Допустим, одна спецификация проходит тестирование на Google.com, а другая - на Amazon.com. Что произойдет, так это то, что при совместном использовании драйвера спецификации будут сбиты с толку. Потому что они используют один и тот же драйвер ... - person Amir Rozenberg; 09.04.2018