Codeception

PhpBrowser

$I->amOnPage('/register');
$I->amOnSubdomain('user');
$I->amOnUrl('http://codeception.com');
$I->attachFile('input[ * `type="file"]',`  'prices.xls');
$I->checkOption('#agree');
$I->click('Logout');
$I->click('Logout', '#nav');
$I->deleteHeader('X-Requested-With');
$I->dontSee('Sign Up','h1');         
$I->dontSeeCheckboxIsChecked('#agree');
$I->dontSeeCurrentUrlEquals('/');
$I->dontSeeCurrentUrlMatches('~$/users/(\d+)~');
$I->dontSeeElement('.error');
$I->dontSeeInCurrentUrl('/users/');
$I->dontSeeInField('Body','Type your comment here');
$I->dontSeeInFormFields('form[name=myform]', [
         'input1' => 'non-existent value',
         'input2' => 'other non-existent value',
]);
$I->dontSeeInSource('<h1>Green eggs & ham</h1>');
$I->dontSeeLink('Logout');
$I->dontSeeOptionIsSelected('#form input[name=payment]', 'Visa');
$I->executeInGuzzle(function (\GuzzleHttp\Client $client) {
         $client->get('/get', ['query' => ['foo' => 'bar']]);
});
$I->fillField("//input[ * `type='text']",`  "Hello World!");
$I->grabAttributeFrom('#tooltip', 'title');

Acceptance Testing

$I->seeElement('#modal'); 
$I->waitForElement('#agree_button', 30); // secs

$I->click('#agree_button');

 Click alternatives

$I->click(['id'=>'myButtonID']);
$I->executeJS("$('input[name=submit]').click();");