Released Selenide 6.17.1

Released Selenide 6.17.1

Sim-sim, unhang!
20.08.23

Good morning! Today is August, 20 - Restoration of Independence day in Estonia.

In honor of this holiday - a small release Selenide 6.17.1!

Un-hang hanging webdriver

In Selenide 6.16.0 (PR 2358), we occasionally introduced a bug that caused webdriver hanging in some situations. More exactly, if you call open(url, pageClass) twice, then webdriver hangs forever.

Wow. :)

  @Test
  public void this_snippet_hangs() {
    Selenide.open("https://www.google.com/", GooglePage.class);
    Selenide.open("https://www.google.com/", GooglePage.class);
  }

In fact, I found that this is a bug in webdriver, because it’s reproducible with pure Selenium. And changes in Selenide 6.16.0 just made it easily reproducible.

Now we fixed this problem for most users (but not for all).
We will wait for the full fix on webdriver side.

See issue 2424 and PR 2428.

Huge thans for extryd for a concise problem description with steps to reproduce. Such a description is an invaluable help to maintainers. I wish all tickets were like this!


Added support for $.type() in mobile apps

In a previous release, we added method type:

  $.type("Type me slowly with delays");

that types the text slowly, with delays. Useful for testing autocompletion, search etc.

But it turned out that it didn’t work in mobile apps (selenide-appium). Now it will work.

See issue and PR 2408.


Fixed method $.type(Keys.*)

The abovementioned method type method accepts not only strings, but also CharSequence. Which means this code should also work:

  import org.openqa.selenium.Keys;

  $("input").type(Keys.ENTER);

But it was broken because tried to case Keys.ENTER (which is CharSequence) to type String. Now it works (though it’s still not clear why it might be useful).

Thanks to Oleg Berezhnoy for observation and issue 2422.
Fixed in PR 2421.


Removed leading/trailing spaces from $$.texts()

In Selenide 6.16.0, we accelerated work with collections with a help of JavaScript code.
But abovementioned Oleg Berezhnoy revealed that we occasionally changes the behaviour of method $$.texts(). Before, it returned texts of elements without leading and trailing spaces:

  assertThat($$(".burnees").texts()).isEqualTo(List.of(
    "SIG",
    "Olenegorsky Gornyak",
    "Air base Soltsy",
    "Chongar bridges",
    "Henichesk Bridge"
  ));

And starting from 6.16.0, it returned texts with leading/trailing spaces:

  assertThat($$(".burnees").texts()).isEqualTo(List.of(
    "  SIG   ",
    "    Olenegorsky Gornyak   ",
    "       Air base Soltsy      ",
    "          Chongar bridges       ",
    "              Henichesk Bridge       "
  ));

This is perhaps a disputable which one is correct, but this is how the standard WebElement.getText() method works. So we didn’t argue. Now $$.texts() trims head and tail spaces again.

See issue 2419 and PR 2427.


Andrei Solntsev

selenide.org

20.08.23