Size: a a a

Selenide на русском

2019 November 22

YO

Yaroslav Osmyslitelny in Selenide на русском
1) в конфигах есть капабилити
2) через System
источник

YO

Yaroslav Osmyslitelny in Selenide на русском
в доке или параметрах есть инфа про это
источник

R

Roman in Selenide на русском
Anton
зачем и какой?
типа такого  @Override
   public WebDriver createDriver(DesiredCapabilities desiredCapabilities, String lang) {
       FirefoxOptions options = new FirefoxOptions();
       options.addPreference("intl.accept_languages", lang);
       WebDriverManager.getInstance(FIREFOX).setup();
       return new FirefoxDriver(options);
   }
источник

A

Anton in Selenide на русском
Roman
Чтобы можно было язык браузера задавать
прямо в метод не получится, но в коде можно параметр доставать из System или других. А так же можете сделать просто 2 провайдера =) у меня есть для локального запуска и для remote, оба использую один и тот же метод заполнения Options например
источник

YO

Yaroslav Osmyslitelny in Selenide на русском
Roman
типа такого  @Override
   public WebDriver createDriver(DesiredCapabilities desiredCapabilities, String lang) {
       FirefoxOptions options = new FirefoxOptions();
       options.addPreference("intl.accept_languages", lang);
       WebDriverManager.getInstance(FIREFOX).setup();
       return new FirefoxDriver(options);
   }
com.codeborne.selenide.webdriver.FirefoxDriverFactory#transferFirefoxProfileFromSystemProperties

это через System
источник

YO

Yaroslav Osmyslitelny in Selenide на русском
com.codeborne.selenide.Configuration#browserCapabilities

это через конфиг
источник

YO

Yaroslav Osmyslitelny in Selenide на русском
во 2м джавадока. в 1м имя и формат как задавать значения
источник

M

Max in Selenide на русском
public boolean elementIsVisible(SelenideElement element) {
   try {
       element.shouldBe(Condition.exist);
       return true;
   } catch (Exception exc) {
       return false;
   }
}


П
очему в таком методе если элемент не существует то не перехватывается exception? Как мне казалось тут в случае если элемент не существует должен вернуться из метода false. Но в итоге падает с Caused by: NoSuchElementException: no such element
источник

sm

so ma in Selenide на русском
Max
public boolean elementIsVisible(SelenideElement element) {
   try {
       element.shouldBe(Condition.exist);
       return true;
   } catch (Exception exc) {
       return false;
   }
}


П
очему в таком методе если элемент не существует то не перехватывается exception? Как мне казалось тут в случае если элемент не существует должен вернуться из метода false. Но в итоге падает с Caused by: NoSuchElementException: no such element
Потому что AssertionError это Error, а не Exception
источник

M

Max in Selenide на русском
оу. спасибо
источник

YO

Yaroslav Osmyslitelny in Selenide на русском
Уже часа два медитирую, никаких просветов. Может кто нибудь подсказать смысл вот этого фикса?
https://github.com/selenide/selenide/commit/368d044de985e3e340c31bbaad91134f51220823#diff-9fd98eefb97a5d1a5523315bc7ea7cf8L99

из потокобезопасного треддрайвер контейнера, сделали возврат просто драйвера без подвязки к потоку
источник

AS

Andrei Solntsev in Selenide на русском
Max
public boolean elementIsVisible(SelenideElement element) {
   try {
       element.shouldBe(Condition.exist);
       return true;
   } catch (Exception exc) {
       return false;
   }
}


П
очему в таком методе если элемент не существует то не перехватывается exception? Как мне казалось тут в случае если элемент не существует должен вернуться из метода false. Но в итоге падает с Caused by: NoSuchElementException: no such element
@Furs111 Про иерархию Throwable, Exception, Error, AssertionError уже сказали выше.
Но что гораздо важнее - НЕ ДЕЛАЙ ТАК!
Этот код плохой по многим причинам, и одна из них - он всегда будет ждать 4 секунды (или какой там у тебя таймаут).
источник

M

Max in Selenide на русском
Andrei Solntsev
@Furs111 Про иерархию Throwable, Exception, Error, AssertionError уже сказали выше.
Но что гораздо важнее - НЕ ДЕЛАЙ ТАК!
Этот код плохой по многим причинам, и одна из них - он всегда будет ждать 4 секунды (или какой там у тебя таймаут).
Да, что это не лучшая практика знаю. Но там просто довольно специфичный момент который пока не придумал как по другому обойти
источник

AS

Andrei Solntsev in Selenide на русском
Yaroslav Osmyslitelny
Уже часа два медитирую, никаких просветов. Может кто нибудь подсказать смысл вот этого фикса?
https://github.com/selenide/selenide/commit/368d044de985e3e340c31bbaad91134f51220823#diff-9fd98eefb97a5d1a5523315bc7ea7cf8L99

из потокобезопасного треддрайвер контейнера, сделали возврат просто драйвера без подвязки к потоку
@osmyslitelny А тебе зачем это надо?
Смысл фикса описан в https://ru.selenide.org/2019/10/16/selenide-5.4.0/
источник

AS

Andrei Solntsev in Selenide на русском
@Furs111 Ну так сделай return element.isDisplayed() на крайняк, раз уж так IF понадобился.
источник

AS

Andrei Solntsev in Selenide на русском
Yaroslav Osmyslitelny
таким, это каким?) укоротил вопрос:
если при имплементации WebDriverProvider конфиги статик и не потокобезопасны (вроде как да).
Какая разница / в чем / для чего между staticSelenideDriver и webdriverContainer в WebDriverRunner. Зачем два потокобезопасных поля для работы с браузером в которых 2 разные имлементации может оказаться
А тебе зачем это всё? Поле staticSelenideDriver приватное, его точно не надо использовать.
источник

M

Max in Selenide на русском
Мне нужно какое то время ждать элементы которые могут появиться не сразу, а могут и не появиться, тогда с ними ненужно взаимодействовать, а просто выполнять код дальше
источник

AS

Andrei Solntsev in Selenide на русском
да-да, слышал такое стопицот раз. У всех такая “уникальная ситуация”.
источник

YO

Yaroslav Osmyslitelny in Selenide на русском
Andrei Solntsev
А тебе зачем это всё? Поле staticSelenideDriver приватное, его точно не надо использовать.
Selenide open его использует
источник

M

Max in Selenide на русском
Andrei Solntsev
да-да, слышал такое стопицот раз. У всех такая “уникальная ситуация”.
Ну по другому я не знаю как там вырулить
источник