Доброе утро!
Сегодня 20 августа - День Восстановления Независимости Эстонии.
В честь этого праздника - небольшой релиз Selenide 6.17.1!
- Отвисли зависающий вебдрайвер
- Добавили поддержку
$.type()
в мобилках - Исправили метод
$.type(Keys.*)
- Убрали пробелы с концов в
$$.texts()
Отвисли зависающий вебдрайвер
В релизе Selenide 6.16.0 (на самом деле PR 2358), в селениде случайно появилась бага, из-за которой вебдрайвер мог легко зависнуть.
А именно, если вызвать два раза подряд open(url, pageClass)
, то вебдрайвер накрепко зависает.
По предварительным данным, вебдрайвер перешел на нерасчётную орбиту и разбился, столкнувшись с дедлоком в параллельных потоках devtools.
Вот такие ничоси. :)
@Test
public void вот_этот_кусок_зависает() {
Selenide.open("https://www.google.com/", GooglePage.class);
Selenide.open("https://www.google.com/", GooglePage.class);
}
На самом деле это оказалась бага в вебдрайвере, она легко повторяется и с чистым селениумом. А изменения в Selenide 6.16.0 просто сделали её повторение более вероятным.
В общем, проблему мы исправили для большинства пользователей. Но не для всех (грубо говоря, селенид просто старается
не вызывать опасный код, пока для этого нет явной необходимости).
А полного исправления придётся ждать на стороне ведрайвера.
См. issue 2424 и PR 2428.
Огромное спасибо extryd за чёткое описание проблемы с ультрапростыми инструкциями, как её стабильно повторить. Такое описание бага - неоценимая помощь мейнтейнерам. Все бы тикеты такие были!
Добавили поддержку $.type()
в мобилках
В предыдущем релизе появился метод
$.type("Биомеханоиды и трансгендеры");
который вбивает текст медленно, с задержками. Полезно для тестирования автозаполнения, поиска и т.п.
Но оказалось, что он не работал в мобилках (selenide-appium). Теперь будет работать.
Исправили метод $.type(Keys.*)
Вышеупомянутый метод type
принимает не только строки, но и CharSequence
.
Что означает, что такой вариант тоже должен работать:
import org.openqa.selenium.Keys;
$("input").type(Keys.ENTER);
Вот только он ломался, потому что пытался закастить Keys.ENTER
(который вообще-то CharSequence
) к типу String
.
В общем, теперь этот вариант тоже будет работать (хотя польза от него неясна).
Спасибо Oleg Berezhnoy за наблюдательность и issue 2422.
Фикс в PR 2421.
Убрали пробелы с концов в $$.texts()
В Selenide 6.16.0 мы ускорили работу с коллекциями с помощью вставок JavaScript кода.
Но вечновнимательный Oleg Berezhnoy заметил, что при этом мы случайно поменяли поведение
метода $$.texts()
. Раньше он возвращал список текстов элементов, в которых пробелы в начале и конце обрезаны:
assertThat($$(".burnees").texts()).isEqualTo(List.of(
"Сиг",
"Оленегорский горняк",
"Авиабаза Сольцы",
"Чонгарский мост",
"Гениченский мост"
));
А с 6.16.0 стал возвращать тексты элементов вместе с пробелами:
assertThat($$(".burnees").texts()).isEqualTo(List.of(
" Сиг ",
" Оленегорский горняк ",
" Авиабаза Сольцы ",
" Чонгарский мост ",
" Гениченский мост "
));
Возможно, это спорный вопрос, как правильно, но во всяком случае так работает стандартный метод WebElement.getText()
.
Спорить не стали. Теперь $$.texts()
снова обрезает пробелы в голове и хвосте.
См. issue 2419 и PR 2427.

ru.selenide.org
20.08.23