Skip to content

Latest commit

 

History

History
799 lines (599 loc) · 39.8 KB

CHANGELOG.md

File metadata and controls

799 lines (599 loc) · 39.8 KB

Changelog

4.14.0 (planned to xx.09.2018)

  • #784 Enable BasicAuth through Selenide proxy server -- see #785
  • #788 Add setting to enable/disable proxy server
  • #789 Remove ?timestamp parameter for IE

4.13.0 (released 20.08.2018)

  • #771 Added method $.lastChild() for retrieving the last child element of a given element

  • #601 Added collection checks with custom timeout -- see PR #781

  • #782 Added method Selenide.download(url)

  • #773 Upgraded to Selenium 3.14.0. SelenideElement does not implement the following deprecated interfaces anymore: FindsByLinkText, FindsById, FindsByName, FindsByTagName, FindsByClassName, FindsByCssSelector, FindsByXPath, HasIdentity

  • #273 Method switchTo().alert() now throws NoAlertPresentException instead of TimeoutException -- thanks to @tsukakei for PR #774

  • #709 Fixed a misleading error message $.selectOptionByValue() reports -- thanks to Keita Tsukamoto for PR #780

  • #734 Fixed incorrect filename of downloaded file -- thanks to @rosolko for PR 768

  • #783 Upgraded to webdrivermanager 2.2.5 -- see https://github.com/bonigarcia/webdrivermanager/blob/master/changelog

  • #775 Upgrade to htmlunit 2.32.1

  • #778 Fixed Selenide tests for FireFox

4.12.3 (released 17.07.2018)

  • #696 Reload collection on every method call
  • #758 Timeout for downloading files -- thanks to Yuri Ivanov @YuriIvanov
  • #757 Add support for JUnit5 -- thanks to Aliaksandr Rasolka @rosolko
  • #757 Upgrade Selenide own tests to JUnit5 and AssertJ -- thanks to Aliaksandr Rasolka @rosolko

4.12.2

  • #749 Added because method to CollectionCondition -- thanks to Mikhail Sidelnikov @sidelnikovmike
  • #695 Do not open a browser if Configuration.reopenBrowserOnFail is false and user has not set webdriver manually
  • Upgrade selenium to 3.13.0 version
  • Upgrade webdrivermanager to 2.2.3 version

4.12.1 (released 02.06.2018)

  • fix support for alert/confirm dialogs in headless chrome/firefox

4.12.0 (released 30.05.2018)

  • PR #735 Incorrect filename of downloaded file issued in #735 -- thanks to Aliaksandr Rasolka @rosolko
  • PR #736 Provide webdrivermanager on api level -- thanks to Aliaksandr Rasolka @rosolko
  • PR #737 Add threadId to log messages on closeWebDriver() -- thanks to Alexander Poleschuk @AlexanderPoleschuk
  • PR #741 Use selenium refresh for selenide refresh instead of reopen current url issued in #740 -- thanks to Aliaksandr Rasolka @rosolko
  • PR #744 Refactor dependencies and introduce sonarqube instead of coveralls issued in #702 -- thanks to Aliaksandr Rasolka @rosolko
  • PR #751 Fix isHeadless method isn't working for headless browser in #750 -- thanks to Aliaksandr Rasolka @rosolko

4.11.4 (released 09.05.2018)

  • PR #673 Redirect tons of firefox logs to /dev/null -- thanks to Aliaksandr Rasolka @rosolko for PR #732
  • upgrade to selenium 3.12.0
  • upgrade to gson:2.8.4
  • upgrade to guava:25.0

4.11.3 (released 07.05.2018)

  • PR #730 Fix duplicating screenshots on error issue #729 -- thanks to Boris Osipov @BorisOsipov
  • PR #727 Add cssValue condition issued in #628 -- thanks to Aliaksandr Rasolka @rosolko
  • PR #726 fixed browserBinary usage on remote server issue #725 -- thanks to Alexei Vinogradov @vinogradoff
  • PR #731 Add ability to get browser mob proxy instance -- thanks to Aliaksandr Rasolka @rosolko

4.11.2 (released 25.04.2018)

  • PR #718 introduce setValueChangeEvent option -- thanks to @MikeShysh
  • PR #705 Make screenshot of SelenideElement/WebElement which is inside iframe -- thanks to @andrejska
  • PR #646 Added method to check if page is scrolled to the bottom -- thanks to @pavelpp
  • PR #715 Added static analysis for avoiding start import for main package, fixing existing violations -- thanks to @andrejska
  • PR #714 dd series of unit tests for commands, collections, conditions, impl package classes -- thanks to @azakordonets
  • Upgrade to webdrivermanager:2.2.1
  • Upgrade to htmlunit:2.30

4.11.1 (released 03.04.2018)

  • See #711 Fix problem with hanging Chrome on Windows -- thanks to Aliaksandr Rasolka @rosolko for PR 711 (Chrome processes are still alive after calling close method)

4.11.0 (released 02.04.2018)

  • upgrade to selenium-java:3.11.0
  • deprecated followLink method - just use click instead.
  • See #688 support downloading files with cyrillic name
  • See #692 added support for -Dchromeoptions.prefs=profile.block_third_party_cookies=false,profile.avatar_index=26 -- thanks to Tymur Kubai aka @sirdir
  • See #686 fix occasional NPE's in SelenideReport -- thanks to @dkorobtsov
  • See #478 added method $$.shouldHave(textsInAnyOrder("Push", "Image", "Email")) -- thanks @hyunil-shin for PR #589
  • See #687 Add ability to set browser window position -- thanks to Aliaksandr Rasolka @rosolko for PR 687
  • See #655 fix listeners soft asserts return null screenshot for failed test -- thanks to Boris Osipov @BorisOsipov for PR #659
  • make it possible to add customer request/response interceptors to selenide proxy server

4.10.01 (released 19.01.2018)

  • See #672 fixed lazy evaluation of $$.get(index), $$.first(n), $$.last(n), $$.last()
  • See #678 upgrade to webdrivermanager:2.1.0

4.10 (released 12.01.2018)

  • See #641 Increased Elements Collection performance -- thanks to Artem Savosik @CaBocuk for PR 653
  • See #639 Add "User-Agent" header when downloading file -- thanks to Aleksandr Rasolka @rosolko
  • See #556 add possibility to set custom capabilities for custom Chrome options or Firefox profies --Thanks to @SergeyPirogov for PR 556 and @BorisOsipov for PR 664
  • See #660 add possibility to create headless RemoteDriver -- thanks to @BorisOsipov for PR 661
  • See #597 support non-breakable spaces in byText and withText
  • See #649 Provide scrollIntoView to workaround problems in Firefox
  • upgrade to htmlunit 2.29 & guava:23.6-jre
  • upgrade to phantomjsdriver 1.4.4

4.9.1 (released 31.12.2017)

  • fixed bug where disabled input fields were not handled properly by setValue()
  • fixed behaviour of setFastValue, which caused blur event to be ignored
  • See #654 fixed ClassCastException in WebDriverFactory#logBrowserVersion()

4.9 (released 20.12.2017)

  • See #638 upgrade to selenium-java:3.8.1 -- thanks to Aleksandr Rasolka
  • See #621 Make marionette the default firefox driver implementation -- thanks to ostap-oleksyn
  • See #617 Fix initialization of SelenideElements without @FindBy annotation declared inside ElementsContainer -- thanks to Artem Savosik @CaBocuk
  • See #623 Add methods $$(“.item”).first(3) and $$(“.item”).last(3) -- thanks to ostap-oleksyn
  • See #627 Add ability to set browser binary path using configuration parameter -- thanks to ostap-oleksyn
  • See #634 fix method prompt() in HtmlUnit -- thanks to Anton Aftakhov
  • upgrade to guava:23.5-jre
  • upgrade to httpcore:4.4.8
  • upgrade to htmlunit-driver:2.28.2
  • upgrade to webdrivermanager:2.0.1

4.8 (released 08.10.2017)

  • updated to selenium 3.6 -- thanks to ostap-oleksyn
  • upgraded to org.apache.httpcomponents:httpcore:4.4.7
  • See #614 fix issue with soft asserts -- thanks to ostap-oleksyn

4.7.1 (released 05.10.2017)

  • declare compile-time dependency guava 23.0 instead of guava 21.0 (for those whose Maven downloads the older guava version)

4.7 (released 29.09.2017)

  • upgrade to selenium-java 3.5.3
  • upgrade to browsermob-core 2.1.5 (and downgrade to littleproxy 1.1.0-beta-bmp-17)
  • See #610 integration with DriverManager
  • See #591 Added method prompt() -- Thanks to Anton Aftakhov aka @simple-elf
  • See #210 Show path to page html in addition to screenshot -- Thanks @hyunil-shin for PR #590
  • See #570 Fixed concurrency issue with screenshots during parallel runs -- Thanks Jane Riabchenko for PR #595
  • upgrade to htmlunit 2.27 -- Thanks to @alexander-kotlyar

4.6 (released 31.08.2017)

  • See #529 Cannot find capabilities with browserName=ie when grid hub url specified in -Dremote -- thanks to @BorisOsipov
  • See #551 Method $.setValue() should not fail if it could not trigger change event (for whatever reason).
  • See #528 - Wrong ElementNotFound exception message -- thanks to @BorisOsipov
  • See #573 - Method $.shouldHave(exactValue(" foo ")) does NOT trim leading/trailing spaces anymore - thanks to @mseele for this PR

4.5.1 (released 27.06.2017)

  • See #484 added method $.getSearchCriteria()
  • See #484 fixed performance issue: Selenide tried to log collections' parent WebElement without waiting for it

4.5 (released 26.06.2017)

  • Performance improvement of method $.setValue() -- thanks to Alexander Popov
  • See #549 Selenide waits too much for collections
  • Add methods $().$x and $().$$x -- thanks to Oleksii Cherevatyi
  • Fix support for Opera driver -- thanks to Roman Marinsky
  • Remove spam from logs: INFO: Close proxy server: 24 -> null -- thanks to Andrew Zakordonets
  • upgrade to org.littleshoot:littleproxy:1.1.2
  • upgrade to phantomjsdriver 1.4.3
  • added many unit tests for Selenide itself -- thanks to Andrew Zakordonets

4.4.3 (released 25.04.2017)

  • upgrade to selenium-java 3.4.0

4.4.2 (released 30.03.2017)

  • See #510 fix closing windows in $.download()

4.4.1 (released 28.03.2017)

  • Add workaround for invalid resolving of selenium-api dependency by Maven

4.4 (released 27.03.2017)

  • See #479 Added methods clearBrowserCookies() and clearBrowserLocalStorage()
  • See #497 Added methods $x("//div"), $$x("//div") for finding elements by xpath
  • See #457 fix performance degradation in parallel tests
  • See #494 fix $.toString() on Android driver
  • upgrade to selenium-java 3.3.1
  • upgrade to phantomjsdriver 1.4.1
  • Upgrade to htmlunit 2.24

4.3 (Released 09.02.2017)

  • System properties names aligned with Configuration fields. e.g. Configuration.someProp always has selenide.someProp equivalent (old names still supported for backward compatibility)
  • JavaDocs are fixed - now it is more clear that $,$$,find,etc. methods don't start the search
  • deprecated Selenide.selectRadio (for SelenideElement.selectRadio)
  • upgrade to browsermob-core:2.1.4
  • upgrade to org.apache.httpcomponents:httpcore:4.4.6
  • upgrade to guava:21.0

4.2.1 (Released in January 2017)

  • fixed problems with int and boolean capability values, now converting automatically
  • added support for FirefoxProfile over commandline (-Dfirefoxprofile.=,
  • added support for ChromeOptions (args only) over commandline (-Dchromeoptions.args=,...)
  • See #426 fix error reporting in method $$().find() - see PR #426
  • See #443 SelenidePageFactory added to support page object initialization without @FindBy annotation - see PR #443

4.2 (Released 13.12.2016)

  • v#431 browser=firefox uses legacy driver (works for <=47), browser=marionette - gecko driver (any Firefox)
  • Added experimental support of Edge (browser=edge, set webdriver.edge.driver to path to MicrosoftWebDriver.exe)
  • See #433 bypass spawning local browser
  • See #391 add method $.selectOptionContainingText()
  • See #378 Cut off WebElement screenshot size when it doesn't fit in full page screenshot
  • See #379 added support for transferring any capability via System Property (-Dcapabilities.xxx=yyy)
  • support for cloud services like BrowserStack, SauceLabs etc through supporting of arbitrary capabilities.

4.1 (Released 01.12.2016)

  • See #428 Improve byAttribute method for search via css selectors
  • See #419 #425 Added methods texts(List) and exactTexts(List) to CollectionCondition
  • Improve support for gecko (marionette) driver
  • Upgrade to selenium-java 3.0.1
  • Upgrade to htmlunit-driver 2.23.2
  • Upgrade to gson 2.8.0
  • Upgrade to guava 20.0
  • Explicitly declare dependency on newest httpcore:4.4.5 to avoid using old version (that Maven inherits from allure plugin or something like that)

4.0 (Released 15.10.2016)

  • See #388 Upgrade to selenium-java 3.0.0
  • See #388 Upgrade to java 8
  • log all intercepted http responses if proxy server failed to download file

3.11 (Released 14.10.2016)

  • See #415 Selenide calls SeleniumException.getMessage() multiple times
  • See #416 Added condition checked for verifying checkboxes

3.10 (Released 26.09.2016)

  • See #402 Disable built-in proxy server by default
  • See #400 Support multiple select
  • See #408 TextReport can be printed only for failed tests
  • See #398 Support "Content-Disposition" header with encoding
  • See #401 Selenide swallows exception in some cases
  • See #379 Turn on temporary disabled test for firefox (thanks to @BorisOsipov)
  • See #407 Method open cannot open url in upper case

3.9.3 (Released 09.09.2016)

  • See #393 Selenide should NOT add proxy server to browser if Configuration.fileDownload = HTTPGET

3.9.2 (Released 03.09.2016)

  • See #386 Selenide should download files "old way" if tests uses its own "custom" webdriver
  • See #387 User can choose how to download files via Configuration.fileDownload

3.9.1 (Released 27.08.2016)

  • See #383 Selenide proxy server now allows requests and responses bigger than 2MB (but writes warning)
  • See #384 fixed SoftAssert listener for TestNG: it only applies for classes with @Listeners(SoftAssert.class} annotation
  • See #372 fixed SoftAssert listener for TestNG: it ignores tests with "expectedExceptions" attribute
  • upgrade to gson:2.7

3.9 (Released 22.08.2016)

  • See #196 #267 Selenide uses its own proxy server to download files (thanks to @dimand58 for pull request)

3.8.1 (Released 10.08.2016)

  • See #369, #366 Fixed bug with IE and basic auth - thanks to Anton Aftakhov @simple-elf for the pull request!

3.8 (Released 06.08.2016)

  • See #359 user can disable creating *.html files - thanks to @BorisOsipov for this PR!
  • fixed file uploading methods on remote browsers & grid - thanks to Alexei Vinogradov!
  • See #364, #303 TestNG: SimpleReport is now thread-safe
  • See #364, #303 TestNG: SoftAssertsReportsNGTest is now thread-safe
  • See #360 added methods to Selectors; byCssSelector(), byClassName()
  • See #355 added method $.dragAndDropTo(WebElement)
  • See #339 fixed JS error in Edge browser
  • See #290 fixed location of element screenshot - it's not put to "build/reports" folder, not to project root
  • See #302 Selenide now throws an error if soft assert is used without annotation
  • See #367 added link to implementation to javadoc of all public methods in SelenideElement
  • upgrade to htmlunit 2.23

3.7 (07.07.2016)

  • Upgrade to Selenium 2.53.1 - now it should work with Firefox 47
  • See #349 Added Marionette browser support - thanks to Geroen Dierckx @ridiekel for PR!
  • See #345 Selenide should not fail if browser doesn't support JavaScript
  • See #357 Don't show "Screenshots: " in the error log when screenshots are disabled - thanks to @BorisOsipov for PR!

3.6 (29.05.2016)

  • upgrade to phantomjsdriver 1.3.0 (compatible with selenium-java 2.53.0)
  • Add method $.screenshotAsImage(): BufferedImage elementScreenshot = $(".logo").screenshotAsImage(); - thanks to @Akkuzin!
  • See #321 set default page load strategy back to "normal"
  • fixed TestNG TextReport Listener, now only classes annotated with @Report will get reported - thanks to Alexei Vinogradov!
  • See #335 Add support for non-public page objects
  • See #329 Add support for JBrowser driver (but most of Selenide tests still fail with it :( ) - thanks to Anil Kumar Reddy Gaddam for pull request!
  • See #341 Use Selenide timeout when downloading files
  • See #320 Implementation of basic auth. for many browsers - thanks to @dimand58

3.5.1 (Released 04.04.2016)

  • See #309 method $$.shouldHave(size()) should not fail when timeout happens after the 1st check

3.5 (Released 31.03.2016)

  • See #274 added advanced checks for collection size: <, <=, >, >=, <>
  • See #308 set page load strategy to "none" by default
  • See #306 method $.toString() always includes latest value of "value" attribute
  • Upgraded to selenium-java 2.53.0, changelog

3.4 (Released 03.03.2016)

  • See #297 Can set chrome switches with system property -Dselenide.chrome.switches=--disable-popup-blocking
  • See #296 Can set browser version with system property -Dselenide.browser.version=8
  • See #287 add pollingIntervalMilliseconds parameter to #waitUntil #waitWhile
  • Typo in property name selenide.collectionsTimeout fixed
  • Upgraded to selenium-java 2.52.0, changelog
  • Upgraded to htmlunit 2.20, changelog

3.3 (Released 10.02.2016)

  • See #277 Ajax support for collections: Collection methods (operator $$) wait if collection elements get loaded asynchronously
  • added collectionsPollingInterval (defaults to 0,2 s) and collectionsTimeout (defaults to 6 s) to configuration params
  • Upgraded to selenium-java 2.51.0

3.2 (Released 29.01.2016)

  • See #275 Added method for selecting option by index: $("select").selectOption(3)
  • See #272 Add setting "selenide.browser-size" to configure browser window size
  • Fixed Bug in showing Selenium WebDriver version
  • Upgraded to selenium-java 2.50.0, changelog

3.1.3 (Released 22.01.2016)

  • Upgraded to selenium-java 2.49.1 (fixed timeout issue in Grid)
  • Added INFO about Selenide and Selenium WebDriver Versions in use

3.1.2 (Released 19.01.2016)

  • value-Condition checked for substring containing again (in 3.1-3.1.1 - was exact match)

3.1.1 (Released 18.01.2016)

  • Renamed FAILED->FAIL, PASSED->PASS in the print/log output to avoid confusion with PASSED and FAILED of external tools

  • Added INFO about Browser/Version/Platform for the started browser to the logs

  • exclude old selenium-remote-driver and selenium-java transitive dependencies (coming from phantomjsdriver 1.2.1)

3.1 (Released 17.01.2016)

  • Update documentation
  • See #263 Now Selenide does not allow to download file via invisible link
  • See #206 Method switchTo(alert()) now waits until alert appears
  • See #206 Method switchTo(frame()) now waits until frame appears
  • See #271 Method switchTo(window()) now waits until window/tab appears
  • Added methods byName, byXpath, byLinkText, byPartialLinkText,byId for Selectors duplicating Selenium By.* methods
  • Bugfix: Condition.exactTextCaseSensitive now fails searchText is only a substring.
  • Deprecated $(WebElement,...) $$(WebElement,..) - use ``$(WebElement).$(...) instead
  • Added getValue method for SelenideElement (the same as val())
  • Upgraded to selenium-java 2.49.0, changelog

3.0 (Released 24.12.2015)

New functions:

  • Add method Selenide.updateHash() (thanks to @fabienbancharel for pull request #254)
  • upgrade to sizzle 2.2.1
  • upgrade to guava 19.0
  • upgrade to testng 6.9.10

Big refactoring:

  • Refactor AbstractSelenideElement. Instead of single huge class, it's split to many small classes ("commands").
  • User can override any of these commands
  • User can add any custom commands to the standard Selenide methods

Code cleanup:

  • Remove deprecated conditions:
    • notPresent -> Use method $.shouldNot(exist) or $.shouldNotBe(present).
    • hasOptions -> Not needed anymore. Use methods $.selectOption() or $.selectOptionByValue().
    • options -> Not needed anymore. Use methods $.selectOption() or $.selectOptionByValue().
    • hasNotClass -> Use method $.shouldNotHave(cssClass("abc"))
  • Remove deprecated class JQuery
  • Remove deprecated class PrettyReportCreator (use class TextReport for JUnit or TestNG)
  • Remove deprecated methods
    • Selenide.switchToWindow(title) -> use method switchTo().window(title)
    • Selenide.switchToWindow(index) -> use method switchTo().window(index)
  • Remove deprecated methods
    • WebDriverRunner.ie() -> use method WebDriverRunner.isIE()
    • WebDriverRunner.htmlUnit() -> use method WebDriverRunner.isHtmlUnit()
    • WebDriverRunner.phantomjs() -> use method WebDriverRunner.isPhantomjs()
    • WebDriverRunner.takeScreenShot() -> use method Screenshots.takeScreenShot()
  • Remove deprecated methods
    • $.should*(String message, Condition condition) -> use method $.should*(condition.because(message))
  • Remove class com.codeborne.selenide.impl.Quotes because it was migrated to Selenium Webdriver (org.openqa.selenium.support.ui.Quotes)

2.25 (Released 30.11.2015)

  • Changed license from LGPL 3.0 to MIT (less restrictive)
  • See #250 add TextReport (ex. PrettyReportCreator) for TestNG
  • See #227 add method $$.first() and $$.last()
  • See #242 #226 add method Screenshots.getLastScreenshot()
  • See #226 rename method getScreenShotAsFile() to takeScreenShotAsFile() because it actually takes screenshot
  • See #246 add method Selenide.confirm() without text parameter. Sometimes you want to just confirm without verifying text.
  • See #232 methods confirm() and dismiss() return actual dialog text
  • See #244 add ability to skip re-spawning browser after it disappears/closes unexpectedly (added property -Dselenide.reopenBrowserOnFail=false)
  • upgrade to htmlunit 2.19

2.24 (Released 08.11.2015)

  • add method $.pressEscape()
  • extract code for creating WebDriver to a separate class WebDriverFactory
  • See #236 fix soft asserts with TestNG
  • upgrade to selenium 2.48.2

2.23 (Released 15.09.2015)

  • add method $.selectRadio()
  • Method $.setValue() can also select radio button
  • See #216 user cannot change value of readonly field (input, radio, checkbox, textarea)
  • See #215 Take into account element's "maxlength" attr for the JS value setter

2.22 (Released 29.08.2015)

  • See #209 close browser in the same thread (without spawning a daemon thread)

2.21 (Released 03.08.2015)

  • Selenide now requires Java 7 or higher
  • Upgrade to Selenium 2.47.1. Release notes

2.20 (Released to 27.07.2015)

  • See #195 replace System.out and System.err by java.util.logging
  • See #199 Use timeout (5 seconds by default) when closing/killing webdriver [by @admizh]
  • See #204 set timeout (15 sec) and retry (3 times) to create webdriver if first attempt failed
  • Cookies are not sent in FileDownloader after httpclient update [by Philipp Kolesnikov]
  • See #186 Selenide page factory can inject ElementsCollection
  • See #134 for "select", $.getText() returns text(s) of selected option(s).
  • See #66 can take screenshot of a single web element
  • All should-methods with "message" parameter are deprecated
  • exclude cglib-nodep from Selenide dependencies

2.19 (Released 21.06.2015)

  • See #175 Add method to switch into inner frames: switchTo().innerFrame("parentFrame", "childFrame_2", "childFrame_2_1");
  • See #164 Method $.download() accepts untrusted self-signed certificates
  • See #185 PhantomJS accepts untrusted self-signed certificates
  • fastSetValue() also triggers "focus" event (just in case)
  • upgrade to Selenium webdriver 2.46.0
  • See #161 test should not fail if webdriver failed to collect Javascript errors

2.18.2 (Released 24.05.2015)

  • See #182 Bugfix: Selenide 2.18.1 tries to take screenshot too late (when browser is already closed)

2.18.1 (Released 15.05.2015)

  • See #180 Bugfix: Selenide 2.18 takes screenshot many times while waiting for condition

2.18 (Released 29.04.2015)

Behaviour changes:

  • See #158 #167 do looping/waiting on a more upper-level, so that we could retry in case of more errors, e.g. StaleElementException thrown from Selenium
  • take screenshot in case of any other exception (not only UIAssertionError)
  • See #145 $.shouldHave(value()) ignores difference in invisible characters; added check "exactValue" to save the previous behaviour.
  • See #174 user can click using JavaScript using property -Dselenide.click-via-js=true (thanks to @dimand58 for pull request)
  • See #177 Added method $.doubleClick()

Bugfixes:

  • See #176 Methods hover(), contextClick(), dragAndDropTo() can now be chained
  • See #168 fixed Sizzle selectors in pages without jQuery (thanks to @Gert for pull request)
  • added method WebDriverRunner.hasWebDriverStarted() (thanks to @dimand58 for pull request)
  • See #165 Now method $.setValue() triggers the following events in fastSetValue mode: "keydown", "keypress", "input", "keyup", "change.
  • Selenide depends on the newest version commons-codec 1.10 instead of old version commons-codec 1.6 (coming with Selenium)

2.17 (Released 08.03.2015)

  • upgrade to selenium webdriver 2.45.0
  • added "soft asserts" (JUnit and TestNG are supported out-of-the-box)

2.16 (Released 10.01.2015)

  • Added #37 Selenide can create a report of all actions in test
  • Fixed #152 $.closest(".class") works correctly
  • Fixed #151 Method $$.toString() fetches collection if it's not fetched yet
  • Added #154 $.toString() shows all attributes
  • Fixed #153 $.setValue() should not fail if element has disappeared while entering text

2.15 (Released 02.11.2014)

  • See #140 Added support for Sizzle selectors
  • See #139 Added support for multifile upload
  • See #106 Added support for BrowserMob proxy (thanks to Vladimir Denisov @proton72)
  • See #137 Added method for zooming page IN and OUT
  • See #136 Can open non-html pages (e.g. plain text)
  • See #72 Added method for switching to frame/window/tab by index
  • Retrieving screenshot as file - could be useful for reporting frameworks like 'Yandex Allure' (thanks to Vladimir Denisov @proton72)

And minor issues:

  • See #138 Remove pointless warning in Chrome: "You are using an unsupported command-line flag: --ignore-certificate-errors"
  • Removed duplicate "Screenshot:" prefix in error messages
  • Upgraded to Selenium 2.44.0

2.14 (Released 16.09.2014)

Added alternative with error message to all "should" methods.

Now it's possible to write asserts with comment / error message:

$("input#vatin").shouldBe("Vatin is required for government companies", visible, enabled);

2.13 (Released 11.09.2014)

  • Added method $("img").isImage()
  • Added alternate methods be and have: $.should(have(text("___")) - useful for using Selenide with EasyB
  • Added experimental feature "fast set value" (configurable via Configuration.fastSetValue); disabled by default.
  • upgraded to Selenium 2.43.1

2.12 (Released 4.07.2014)

  • Added method $.uploadFile()

  • Fixed method $.uploadFromClasspath - it removes extra ".." parts from file name

  • In case of selectbox, $("select").val("...") selects an option (like in JQuery)

  • Added method getWebDriverLogs() for querying logs returned by webdriver.manage().logs() (thanks to Sergey Shimkiv for this pull request!)

  • Added methods for retrieving screenshot and javascript errors from UIAssertionError

  • Bugfix #119 for Opera (Opera does not support webdriver.manage().window())

  • Upgraded to Selenium 2.42.2

  • Upgraded to HtmlUnit 2.15

2.11 (Released 21.05.2014)

  • Cleanup release. Dropping obsolete/useless functionality.

  • Methods $.selectOption() and $.selectOptionByValue() DO NOT trigger "change" event with jQuery.

  • Class com.codeborne.selenide.JQuery has been deprecated.

  • See #61 Selenide clearly says if parent element/collection is not found

  • See #118 Avoid logging annoying error message "UnreachableBrowserException: Error communicating with the remote browser. It may have died." when closing Firefox browser

  • Upgraded to PhantomJS 1.2.0

2.10 (Released 18.04.2014)

  • Added method switchToWindow(String title)

  • Added methods $.hover() and $.dragAndDropTo(target)

  • Added methods $.parent(), $.closest("tag") and $.closest(".class")

  • Added functions getJavascriptErrors() and assertNoJavascriptErrors()

  • Automatically attach javascript errors to error message when test fails

  • Improved mechanism of closing webdrivers (suggested by Alexandr Gavrilenko)

  • See #114 Selenide throws "Element should be visible" when trying to click invisible element (instead of reporting "Element does not exist" that could be misleading)

  • Removed method Navigator.waitUntilPageIsLoaded - not all pages have "body". E.g. pages containing frames.

  • Method savePageSourceToFile tries to close unexpected alert/confirm dialog (if any)

  • Upgraded to Selenium 2.41.0

2.9 (Released 14.03.2014)

  • See #102 $.shouldHave(text()) should also ignore \u00a0 character (unbreakable space)
  • If selenide cannot take screenshot, the error is logged with stack trace (but only once)
  • See #103 Do not ignore webdriver exception, but attach to the assertion error being thrown.
  • See #69 Added support for Safari webdriver
  • Added method ScreenShooter.to(folder)
  • See #98 Selenide stores page source in UTF-8 encoding(independently of default system encoding)
  • Removed confusing messages about "reportsUrl" and "BUILD_URL"(use LOG.config log level)
  • See #104 Method $.download() throws FileNotFoundException (for 40x error) or RuntimeException (for 50x error)
  • See #105 Selenide should wait 4 seconds and re-try even in case of invalidSelectorException
  • See #107 Selenide should cleanup all unused browsers immediately
  • See #108 Consistently maximize browser windows independently of webdriver creation mode.

2.8.1 (Released 24.02.2014)

  • See #99 Added OR condition
  • See #100 Use "jQuery" instead of "$" when sending jquery commands (to avoid conflicts with other JS frameworks)
  • Upgraded to Selenium 2.40.0, HtmlUnit 2.14 and TestNG 6.8.8

2.8 (Released 15.02.2014)

Non-backward compatible changes:

  • See #96 Method WebDriverRunner.setWebDriver() does not close previous webdriver. You are responsible for webdriver lifecycle if you are using setWebDriver().
  • See #63 Method Condition.actualValue() is optional (it's not needed in most cases). It makes creating custom conditions even more easier.

Improvements:

  • See #95 #79 - Selenide automatically takes screenshots on any test failure, not only if $.shouldXXX method fails.
  • Un-deprecated WebDriverProvider. It still can be useful.
  • See #89 Do not exclude cglib dependency - it's needed for taking screenshots with RemoteWebDriver

New features:

  • See #93 User can get text and html of hidden element with new methods $.innerText() and $.innerHtml()
  • See #77 Added methods back() and forward()
  • See #71 Added method setSelected(boolean) for checking checkboxes
  • See #86 - added methods $.is(condition), $.has(condition)
  • See #62 Added composite condition AND
  • See #94 SelenideElement implements WrapsElement
  • See #88 Method $(WebElement parent, By selector, int index) made public. Added method $(WebElement parent, By selector).
  • See #82 Added setting "selenide.browser" as a synonym for "browser"
  • Method executeJavaScript() can accept multiple arguments

2.7 (Released 31.12.2013)

  • See #59 Automatically take screenshot on any failures. More exactly, when any of methods $.shouldXXX(condition) fails.
  • See #59 When running tests in Jenkinks, Selenide shows public URL of screenshots (using BUILD_URL variable provided by Jenkins). It's incredibly convenient because you can watch screenshots right in the Jenkins report.
  • See #59 Added method getScreenshots() for retrieving all taken screenshots
  • Upgraded to Selenium 2.39.0

2.6.1 (Released 29.11.2013)

  • The most wanted feature is finally here! Added method $.download() for downloading file by "href" attribute!

2.6 (Released 26.11.2013)

  • Added method $.scrollTo()

2.5 (Released 11.11.2013)

  • Created annotations for TestNG that automatically create browser per test/per class
  • Added method $.attr("name") as a synonym for $.getAttribute("name").
  • Added method $.name() as a synonym for $.attr("name")
  • Better support for PhantomJS: ignore alerts and confirms
  • All webdrivers accept SSL certificates by default
  • Selenide clearly says if timeout is mistakenly given in seconds instead of milliseconds.
  • Condition constructor has been simplified (for easier creation of custom conditions)
  • Upgraded to Selenium 2.37.1

2.4 (Released 16.09.2013)

New features:

  • Allow multiple WebDriver instances in parallel threads inside single VM. This allows running parallel tests.
  • All text checks like shouldHave(text(..)) ignore whitespaces!
  • Added method for adding WebDriverEventListeners
  • Added method $.pressTab()
  • CollectionCondition#texts matches substrings
  • Added method CollectionCondition#exactTexts
  • Maximize PhantomJS driver "window" by default
  • Better error messages for wrapped elements in PageObjects

Bugfixes:

  • Method "$$.findBy" waits until element matches the condition
  • Method $.append() first waits until element gets visible

Technical issues:

  • Updated to selenium-java:2.35.0
  • Moved implementation details from WebDriverRunner class to separate WebDriverThreadLocalContainer, ScreenShotLaboratory and Cleanup classes that are not static and can be overridden if needed.
  • WebDriverProvider is deprecated

2.3 (Released 9.07.2013)

New features:

  • Added possibility to mock 'alert' and 'confirm' modal dialogs
  • $$.should-methods can check multiple conditions
  • Collection methods can be chained: $$("#multirowTable tr").shouldHave(size(2)) .filterBy(text("Norris")).shouldHave(size(1));

Usability issues:

  • Readable error messages!
  • Save screenshots into subfolders: folder name is "com/package/TestClass/", file name is "testName.png"/"testName.html"
  • Take screenshots for RemoteWebDriver too (using Augmenter)
  • Added javadoc for all SelenideElement methods

Technical issues:

  • Updated to selenium-java:2.33.0
  • Use "webdriver.quite()" instead of "webdriver.close()" to force closing ChromeDriver and IE process
  • Fixed XPath for byText and withText
  • Removed using INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS for IE driver as it seems to be a bad practice
  • Removed "waitUntilAlertDisappears" because it does nothing useful.
  • Removed accident jcommander dependency
  • Build Selenide with Travis CI

2.2 (Released 31.05.2013)

  • Added method WebDriverRunner.setWebDriver(myDriver) to enable using custom WebDriver instance.
  • Added possibility to run HtmlUnit driver emulating different browsers: -Dbrowser=htmlunit:firefox, htmlunit:chrome etc.
  • Added condition $$().shouldBe(empty)
  • Method $$().shouldHave(size(n)) waits until collection gets expected size
  • Method $.setValue() triggers 'change' events in IE too
  • Updated to selenium-java:2.31.0

2.1 (Released 2.04.2013)

  • Changed license from GPL 1.0 to LGPL 3.0
  • Added support for TestNG
  • Added support for Selenium FluentWait API
  • Added support for Selenium Actions API
  • Added method $.findAll() returning list of matching elements.
  • Added method $$.findBy
  • Added method $$.shouldHave(texts("A", "B", "C")) for asserting texts of all matching elements
  • Added method $.data(attr) as a synonym for $.getAttribute("data-" + attr)
  • Added conditions "name", "not", "type", "id": $("#username").shouldHave(name("firstName"))
  • text and exactText conditions are case insensitive (reason - in css designer can apply text transformations and tests will fail)
  • introduced textCaseSensitive and exactTextCaseSensitive conditions
  • added open methods to Selenide class that return page object by class
  • Methods $.selectOption and $.selectOptionByValue trigger change event when possible.
  • Class ElementsCollection now contains list of SelenideElements (instead of WebElements).
  • Removed deprecated condition "haveText". Use $.shouldHave(text("john")) instead.
  • Excluded org.webbit, netty, selenium-iphone-driver, selenium-safari-driver from Selenide dependencies to avoid loading too much useless stuff unless it's really needed.
  • Now Condition implements Predicate. So it can be used for filtering collections.

2.0 (Released 3.03.2013)

  • Drop deprecated classes and methods (DOM, Navigation).
  • Updated to selenium-java:2.31.0
  • Selenide 2.0 is not backward-compatible with Selenide 1.+ Migration guide:
    • import static com.codeborne.selenide.WebDriverRunner.{browser,holdBrowserOpen,remote,startMaximized,reportsFolder}
      • replace by import static com.codeborne.selenide.Configuration.*
    • import static com.codeborne.selenide.DOM.defaultWaitingTimeout
      • replace by import static com.codeborne.selenide.Configuration.*
    • import static com.codeborne.selenide.DOM.*
      • replace by import static com.codeborne.selenide.Selenide.*
    • import static com.codeborne.selenide.Navigation.*
      • replace by import static com.codeborne.selenide.Selenide.open
    • import com.codeborne.selenide.ShouldableWebElement
      • replace by import com.codeborne.selenide.SelenideElement

1.11 (Released 28.02.2013)

  • Mark classes DOM and Navigation as deprecated (going to drop them in Selenide 2.0). The point is that now user only needs to import one class Selenide.
  • Added support for PhantomJS driver
  • Suppress HtmlUnit useless warnings
  • Method $.setValue() triggers onchange event with standard JavaScript instead of jQuery.
  • Condition "empty" checks for both text and value.
  • Added condition "exactText".
  • Moved jquery-specific workarounds to a separate class JQuery
  • Added selector "by" as a synonym for "byAttribute"
  • Updated to selenium-java:2.30.0

1.10 (Released 11.02.2013)

  • Excluded HtmlUnit dependencies. These have too large size, and not everyone uses them.
  • Added method $$().shouldHaveSize(n)
  • Added methods $.exists(), isDisplayed(), $.text(), $.pressEnter(), $.followLink()
  • Added methods $.selectOption(), $.selectOptionByValue(), $.getSelectedValue(), $.getSelectedText()
  • Changed behaviour of methods byText() and withText(): now spaces in text are ignored
  • Added method $.val(String) as an alternative for $.setValue(String) (opa JQuery style!)
  • Added methods $.waitUntil() and $.waitWhile()
  • Added method Selectors.byAttribute(name, value)
  • Added Conditions appear, readonly and attribute(String)
  • Added method switchTo() for easier supporting frames
  • Method open() can use either absolute or relative URL
  • Added method toWebElement() returning the original WebElement
  • Added annotation BrowserStrategy
  • Methods assertElement, assertVisible, assertHidden in DOM are deprecated.
  • Renamed ShouldableWebElement to SelenideElement (shouldable still exists for compatibility)
  • $$ does not implement WebElement anymore - it was useless feature.
  • Now Selenide kills webdriver if it failed to close normally
  • Moved useful methods to class Selenide. Class DOM will be marked as deprecated in version 1.11 and dropped in 2.0
  • Updated to selenium-java:2.29.1

1.9 (Released 5.01.2013)

  • No need for waitFor/waitUntil methods. All the $(), getElement() and shouldXXX() methods wait for a few seconds until element appears or condition gets satisfied.
  • Added support for PageObjects - see method DOM.page(Class)
  • Added methods $().find() with index parameter
  • Added method $().setValue()
  • Added method DOM.getSelectedRadio()
  • Updated to selenium-java:2.26.0
  • Added initial support for phantomjs headless webkit browser (-Dbrowser=phantomjs)
  • Added support for custom WebDriver initialization by defining com.codeborne.selenide.WebDriverProvider implementation via "browser" system property.

1.8 (Released 29.11.2012)

  • Changed Selectors.byText() behaviour - now it matches THE WHOLE TEXT, not a substring.
  • A new method Selectors.withText() has been added that matches substring.
  • Added option "selenide.start-maximized" (true/false) instead of (deprecated) option "chrome.switches".
  • Added support for By.CssSelector to method DOM.getJQuerySelector()

1.7 (Released 22.10.2012)

  • Added file uploading functionality (file is taken from test classpath)
  • Added methods $().should(), $().shouldHave, $().shouldBe(), $().shouldNot, $().shouldNotBe, $().find()
  • Added method $().toString() for logging WebElement in human-readable format.
  • Added wait-methods with CSS Selector parameter
  • Added method DOM.confirm() for clicking on confirmation dialog (alert)
  • Added support for Opera browser
  • Added method Navigation.refresh() for reloading current page
  • Added condition "present", "notPresent", "exist".
  • Added selector "byText" and condition "matchesText" for matching elements by regex