Selenide + RemoteWebDriver + Change Default Timeout

Всем привет!
Как можно изменить таймауты для Selenide при работе с RemoteWebDriver?
локально меняется просто Configuration.timeout=8000;. Но как быть, в случае если тесты запускаются удалённо?
Сейчас я инициализирую драйвер таким образом:

RemoteWebDriver driver=new RemoteWebDriver(newURL(seleniumUrl),capabilities);
WebDriverRunner.setWebDriver(driver);

Как в таком случае можно задать таймауты?

driver.manage().timeouts().implicitlyWait(8000L, TimeUnit.MILLISECONDS)

Спасибо за ответ! Я пробовал так, и это к сожалению не срабатывает. Стандартное время ожидания остается 4 секунды. Я же правильно понимаю нужно было делать так?

RemoteWebDriver driver=new RemoteWebDriver(newURL(seleniumUrl),capabilities);
driver.manage().timeouts().implicitlyWait(8000L, TimeUnit.MILLISECONDS)
WebDriverRunner.setWebDriver(driver);

Да. А, может, тогда после:

WebDriverRunner.getWebDriver().manage().timeouts().implicitlyWait(8000L, TimeUnit.MILLISECONDS).

Ой, народ, всё неправильно!
implicitWait вообще не надо задавать. Это точно плохая идея.

В селениде таймаут задаётся именно так: Configuration.timeout=8000 - независимо от того, локальный браузер или удалённый. Больше ничего мудрить не нужно.

P.S. Кстати, советую не использовать метод WebDriverRunner.setWebDriver(), а вместо этого просто задать настройку Configuration.remote=seleniumUrl. Тогда селенид сам откроет удалённый вебдрайвер с нужными настройками.

3 лайка

Спасибо, не знал)
А как тогда указывать браузер и его версию?

Вон оно как! Спасибо! А есть где то дока где подобные вещи описаны? Я например слышал про то что setValue вызывает под капотом clear() sendKeys(). А click() проверяет элемент на visible. Где это все можно пощупать не нашел ( буду благодарен за любую информацию

sendKeys не вызывает clear, более того, clear не всегда работает.
click() проверяет, как и другие функции действий у элементов.
Пощупать вы можете на любом сайте, который будете автоматизировать. Или что вы имеете ввиду?

Про setValue я прочитал здесь в 9 посте

Appium (Android) + Selenide, инициализация драйвера - #9 от пользователя evgmoskalenko

Про click() от коллеги услышал. Пощупать я имею ввиду найти подтверждение/ опровержение этому в коде или доке. Если это действительно есть, интересно знать как работают под капотом другие методы, чтобы не делать лишних действий в будущем.
В коде видимо вот реализация:

http://joxi.ru/v29E6VPszqBdd2

UPD
Это прекрасно работает, и решило все мои проблемы! Спасибо за это еще раз:)

Configuration.remote=seleniumUrl
Configuration.browserCapabilities.setCapability("enableVNC", true);

Ну как, есть стандартный javadoc.

Правда, всегда есть риск, что какие-то из интересующих вас нюансов и там не будут описанных - но такой риск есть и с любой другой документацией. В этом и есть фундаментальная проблема документации.

Для таких случаев всегда есть исходники. В IDEA их очень удобно смотреть.

2 лайка

У меня получилось вот так. Такой вариант мне больше нравится

        DesiredCapabilities capabilities = new DesiredCapabilities();
        capabilities.setBrowserName("chrome");
        capabilities.setVersion("80.0");
        capabilities.setCapability("enableVNC", true);
        capabilities.setCapability("enableVideo", false);
        capabilities.setCapability("acceptInsecureCerts", true);

        LoggingPreferences logPrefs = new LoggingPreferences();
        logPrefs.enable(LogType.PERFORMANCE, Level.ALL);
        capabilities.setCapability("goog:loggingPrefs", logPrefs);        

        Configuration.remote = "http://" + HOST_HUB + ":4444/wd/hub";
        Configuration.screenshots = false;        
        Configuration.browserCapabilities = capabilities;
        Configuration.browserSize = "1920x1080";
        Configuration.browserPosition = "2x2"; 

Аналогично можно заменить на это. Но здесь получается длиннее и не так читаемо. Верхний вариант мне больше нравится. Но это наверное дело вкуса уже

        Configuration.remote = "http://" + HOST_HUB + ":4444/wd/hub";
        Configuration.screenshots = false;
        Configuration.browserCapabilities.setBrowserName("chrome");
        Configuration.browserCapabilities.setVersion("80.0");
        Configuration.browserCapabilities.setCapability("enableVNC", true);
        Configuration.browserCapabilities.setCapability("enableVideo", false);
        Configuration.browserCapabilities.setCapability("acceptInsecureCerts", true);
        Configuration.browserCapabilities.setCapability("goog:loggingPrefs", logPrefs);*/
        Configuration.browserCapabilities = capabilities;
        Configuration.browserSize = "1920x1080";
        Configuration.browserPosition = "2x2";
1 лайк