When filling out forms you probably want to use the generators.
 $el['.t-field_first_name']->setValue($this->generate('name:first'));
| Generators | 
|---|
| email () | 
| integer ($min, $max) | 
| name ($length = 5) | 
| password ($length = 32) | 
| phone () | 
| sentence ($wordcount = 5) | 
| title ($wordcount = 5) | 
| url () | 
| username ($length = 10) | 
| words ($wordcount = 5) | 
| CKEditorTrait | 
|---|
| setCkEditorValue (string $css_selector, $value) | 
| InteractiveTrait | 
|---|
| assertPreConditions () | 
| TimeTrait | 
|---|
| setTimeValue ($css_selector, $time) | 
| EndToEndTestCase | 
|---|
| assert ($fail_message = '') | 
| assertElementExists ($css_selector, $failure_message = '') | 
| assertElementNotExists ($css_selector, $failure_message = '') | 
| assertElementNotVisible ($css_selector, $failure_message = '') | 
| assertElementVisible ($css_selector, $failure_message = '') | 
| assertManual ($assertions, array $prerequisite_steps = Array) | 
| assertUrlContentTypeEquals ($content_type, $url) | 
| assertUrlNotSame ($expected) | 
| assertUrlRedirectsTo ($final_url, $url) | 
| assertUrlSame ($expected) | 
| assertUrlStatusCodeEquals ($status_code, $url, $message = '') | 
| assertUrlStatusCodeNotEquals ($status_code, $url) | 
| attachObservationCss ($css) | 
| beginObservation ($button_title = '', array $button_css_classes = Array) | 
| debugger () | 
| doCssInjection () | 
| el ($css_selector, $limit_to_one = true) | 
| els ($css_selector) | 
| emptyCookieJar () | 
| endObservation () | 
| ensureWebSessionStarted () | 
| generate ($method) | 
| getClient (array $options = Array) | 
| getCookieJar () | 
| getDomElements (array $css_selectors) | 
| getEmailHandler () | 
| getIdFromCurrentUrl () | 
| getJavascriptSelectorCode ($css_selector) | 
| getManualAssertUICssStyles () | 
| getMatchedFromCurrentUrl (string $regex) | 
| getObserverUiCssStyles () | 
| getPopupCssStyles () | 
| getSession () | 
| getStored ($key, $default = NULL) | 
| handleBaseUrl () | 
| injectCss ($css) | 
| injectObserverAnchors () | 
| injectObserverUiIntoDom ($css_selector, $position, $button_title, $short_message = '', array $button_classes = Array) | 
| loadPageByUrl ($url) | 
| onAfterLastTest () | 
| onBeforeFirstTest () | 
| requestThenAssert (callable $callback, $url, array $client_options = Array, $method = 'HEAD', callable or NULL $on_fail = NULL) | 
| requireElement ($css_selector) | 
| resolveUrl ($url, $remove_authentication_credentials = false) | 
| scrollToElementTop ($css_selector, $offset = 20) | 
| scrollTop () | 
| setEmailHandler (AKlump\DrupalTest\Utilities\EmailHandlerInterface $handler) | 
| store ($key, $value) | 
| wait ($seconds) | 
| waitFor (callable $test, $description = NULL, $timeout = NULL) | 
| waitForElement ($css_selector, $timeout = NULL) | 
| waitForElementNotVisible ($css_selector, $timeout = NULL) | 
| waitForElementVisible ($css_selector, $timeout = NULL) | 
| waitForEmail ($expected_count = 1, $timeout = NULL) | 
| waitForFinished () | 
| waitForObserver ($display_object = NULL) | 
| waitForObserverPopup (AKlump\DrupalTest\Utilities\Popup $popup) | 
| waitForPageContains ($substring, $timeout = NULL) | 
There is some overlap in assertions between methods of
ClientTestCaseand methods on Mink'sWebAssertclass, but the former always uses css selectors, so it's a little less verbose.
DocumentElement objectsLearn more here.
| DocumentElement | 
|---|
| attachFileToField ($locator, $path) | 
| checkField ($locator) | 
| clickLink ($locator) | 
| elementNotFound ($type, $selector = NULL, $locator = NULL) | 
| fillField ($locator, $value) | 
| find ($selector, $locator) | 
| findAll ($selector, $locator) | 
| findButton ($locator) | 
| findById ($id) | 
| findField ($locator) | 
| findLink ($locator) | 
| getContent () | 
| getDriver () | 
| getHtml () | 
| getOuterHtml () | 
| getSelectorsHandler () | 
| getSession () | 
| getText () | 
| getXpath () | 
| has ($selector, $locator) | 
| hasButton ($locator) | 
| hasCheckedField ($locator) | 
| hasContent ($content) | 
| hasField ($locator) | 
| hasLink ($locator) | 
| hasSelect ($locator) | 
| hasTable ($locator) | 
| hasUncheckedField ($locator) | 
| isValid () | 
| pressButton ($locator) | 
| selectFieldOption ($locator, $value, $multiple = false) | 
| uncheckField ($locator) | 
| waitFor ($timeout, $callback) | 
NodeElement objectsLearn more here.
<?php
class Test {
  public function testExample() {
    // By using getDomElements we ensure only one of .t-link.
    $el = $this->loadPageByUrl('/node/9750')
      ->getDomElements([
        '.t-link',
      ]);
    // $el['.t-link'] is an instance of NodeElement.
    $el['.t-link']->click();
    // Altenatively you could do this.
    $this->el('.t-link')->click()
      }
}
| NodeElement | 
|---|
| attachFile ($path) | 
| attachFileToField ($locator, $path) | 
| blur () | 
| check () | 
| checkField ($locator) | 
| click () | 
| clickLink ($locator) | 
| doubleClick () | 
| dragTo (Behat\Mink\Element\ElementInterface $destination) | 
| elementNotFound ($type, $selector = NULL, $locator = NULL) | 
| fillField ($locator, $value) | 
| find ($selector, $locator) | 
| findAll ($selector, $locator) | 
| findButton ($locator) | 
| findById ($id) | 
| findField ($locator) | 
| findLink ($locator) | 
| focus () | 
| getAttribute ($name) | 
| getDriver () | 
| getHtml () | 
| getOuterHtml () | 
| getParent () | 
| getSelectorsHandler () | 
| getSession () | 
| getTagName () | 
| getText () | 
| getValue () | 
| getXpath () | 
| has ($selector, $locator) | 
| hasAttribute ($name) | 
| hasButton ($locator) | 
| hasCheckedField ($locator) | 
| hasClass ($className) | 
| hasField ($locator) | 
| hasLink ($locator) | 
| hasSelect ($locator) | 
| hasTable ($locator) | 
| hasUncheckedField ($locator) | 
| isChecked () | 
| isSelected () | 
| isValid () | 
| isVisible () | 
| keyDown ($char, $modifier = NULL) | 
| keyPress ($char, $modifier = NULL) | 
| keyUp ($char, $modifier = NULL) | 
| mouseOver () | 
| press () | 
| pressButton ($locator) | 
| rightClick () | 
| selectFieldOption ($locator, $value, $multiple = false) | 
| selectOption ($option, $multiple = false) | 
| setValue ($value) | 
| submit () | 
| uncheck () | 
| uncheckField ($locator) | 
| waitFor ($timeout, $callback) | 
Load a page and then make assertions using Mink's WebAssert class.
<?php
class Test {
  public function testExample() {
    $this->loadPageByUrl('/node/9750')
      ->assert()
      ->elementTextContains('css', '#button', 'English');
    $this->assert()
      ->elementTextContains('css', '#button-2', 'Spanish');
  }
}
| WebAssert | 
|---|
| addressEquals ($page) | 
| addressMatches ($regex) | 
| addressNotEquals ($page) | 
| assert ($condition, $message) | 
| assertElement ($condition, $message, Behat\Mink\Element\Element $element) | 
| assertElementText ($condition, $message, Behat\Mink\Element\Element $element) | 
| assertResponseText ($condition, $message) | 
| checkboxChecked ($field, Behat\Mink\Element\TraversableElement or NULL $container = NULL) | 
| checkboxNotChecked ($field, Behat\Mink\Element\TraversableElement or NULL $container = NULL) | 
| cleanUrl ($url) | 
| cookieEquals ($name, $value) | 
| cookieExists ($name) | 
| elementAttributeContains ($selectorType, $selector, $attribute, $text) | 
| elementAttributeExists ($selectorType, $selector, $attribute) | 
| elementAttributeNotContains ($selectorType, $selector, $attribute, $text) | 
| elementContains ($selectorType, $selector, $html) | 
| elementExists ($selectorType, $selector, Behat\Mink\Element\ElementInterface or NULL $container = NULL) | 
| elementNotContains ($selectorType, $selector, $html) | 
| elementNotExists ($selectorType, $selector, Behat\Mink\Element\ElementInterface or NULL $container = NULL) | 
| elementsCount ($selectorType, $selector, $count, Behat\Mink\Element\ElementInterface or NULL $container = NULL) | 
| elementTextContains ($selectorType, $selector, $text) | 
| elementTextNotContains ($selectorType, $selector, $text) | 
| fieldExists ($field, Behat\Mink\Element\TraversableElement or NULL $container = NULL) | 
| fieldNotExists ($field, Behat\Mink\Element\TraversableElement or NULL $container = NULL) | 
| fieldValueEquals ($field, $value, Behat\Mink\Element\TraversableElement or NULL $container = NULL) | 
| fieldValueNotEquals ($field, $value, Behat\Mink\Element\TraversableElement or NULL $container = NULL) | 
| getCurrentUrlPath () | 
| getMatchingElementRepresentation ($selectorType, $selector, $plural = false) | 
| pageTextContains ($text) | 
| pageTextMatches ($regex) | 
| pageTextNotContains ($text) | 
| pageTextNotMatches ($regex) | 
| responseContains ($text) | 
| responseHeaderContains ($name, $value) | 
| responseHeaderEquals ($name, $value) | 
| responseHeaderMatches ($name, $regex) | 
| responseHeaderNotContains ($name, $value) | 
| responseHeaderNotEquals ($name, $value) | 
| responseHeaderNotMatches ($name, $regex) | 
| responseMatches ($regex) | 
| responseNotContains ($text) | 
| responseNotMatches ($regex) | 
| statusCodeEquals ($code) | 
| statusCodeNotEquals ($code) | 
| Balloon | 
|---|
| __construct (string $message) | 
| after () | 
| before () | 
| create ($message) | 
| delay (integer $seconds) | 
| dispatch (string $callback_name) | 
| el (string $css_selector) | 
| getBody () | 
| getCssSelector ($default = '') | 
| getOffset () | 
| getPosition ($default = '') | 
| getTitle () | 
| offset (integer $x, integer $y) | 
| onAfterShow (callable $callback) | 
| onBeforeShow (callable $callback) | 
| Url | 
|---|
| __construct ($url) | 
| toString () |