Finding DOM Elements For Codeception Acceptance & Functional Testing
When writing functional and acceptance tests for your PHP application I highly recommend Codeception. The platform is incredible to get up and running for your test automation needs. That being said, I am far from an expert, but like everything, the more I use it, the more I am learning about it.
I wanted to create this article in a fashion that will allow me to periodically update it with new methods and findings I learn about or create in order to keep track of them, and share with you!
Finding & Filling In Dynamically Named & Hidden Form Fields
If you have an application where the form fields’ id and name attributes can change on each page load, writing a method using the xpath like $I->fillField('//input[@name="some_form_field"]')
is not going to work. One page load the name
attribute might be “some_form_field_12345” and the next page load it might be “some_form_field_54321”. That’s where $I->executeJS()
comes in very handy. Now you can find and fill out the field using this method in an example shown below.
$I->executeJS('$(\'input[name*="some_form_field"]\').val("Your Value Here")');
To make this even better, I want to make it reusable, so I will add a custom method to my helper class.
/** * @param $selector * @param $value * @return mixed */ public function fillInDynamicField($selector, $value) { $webDriver = $this->getModule('WebDriver'); return $webDriver->executeJS('$(' . $selector . ').val(' . $value . ')'); }
Now you can use it in all your tests like below.
$I->fillInDynamicField('\'input[name*="clientSinceDate"]\'', "06/01/2017");
No Comments