Передача ChromeOptions без создания нового WebDriver

Я пытаюсь передать ChromeOptions своему драйверу, чтобы разрешить всплывающие окна. Я использую TestNG с аннотациями @BeforeClass, @Test и @AfterClass. Я пытаюсь включить всплывающие окна, и мне это удалось, используя следующий метод.

@BeforeClass
public void setUp(){
    if (driver instanceof ChromeDriver){
        ChromeOptions options = new ChromeOptions();
        options.addArguments("--disable-popup-blocking");
        driver = new ChromeDriver(options);
    }
   }

Хотя это работает, он открывает веб-драйвер, а затем открывает другой с параметрами. Я не хочу, чтобы появлялись два веб-драйвера.. Я просто хочу передать эти параметры первому веб-драйверу! Я запускаю их, используя xml и класс TestExtension, где создаются экземпляры драйверов и не хотят изменять этот класс. Есть ли способ изменить драйвер = новый ChromeDriver(параметры) на что-то, что будет просто передавать эти параметры в? Спасибо!

1 ответ

Решение

Вы не можете сделать это, не изменив свой класс TestExtension. Причина в том, что любые передаваемые вами аргументы передаются в браузер, который создается во время создания экземпляра. После этого нет способа что-либо изменить, чтобы изменить поведение порожденного браузера. Вам нужно будет изменить свой класс TestExtension, а затем предоставить механизм, в котором пользователь может в основном внедрить свои собственные возможности, которые будут учтены TestExtension до появления браузера. Это может быть столь же тривиально, как передача полностью определенного имени пакета класса, который при вызове может создать экземпляр объекта возможности, который вы передаете через аргумент JVM.

Ваш класс TestExtension будет в основном проверять аргумент JVM на наличие любых передаваемых пользовательских возможностей, а в случае обнаружения он также объединит эти возможности со своими возможностями и затем породит браузер. Это единственный способ сделать это.

Другие вопросы по тегам