From 420ceb8c0d92655fb8d9ed197872ec1d9b2e1dbf Mon Sep 17 00:00:00 2001 From: Steve Boyd Date: Thu, 15 Apr 2021 12:13:29 +1200 Subject: [PATCH] NEW Add iClickOnTheElement --- src/Context/BasicContext.php | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/src/Context/BasicContext.php b/src/Context/BasicContext.php index 1b3ae49..f043981 100644 --- a/src/Context/BasicContext.php +++ b/src/Context/BasicContext.php @@ -278,7 +278,7 @@ JS; public function closeModalDialog(AfterScenarioScope $event) { $expectsUnsavedChangesModal = $this->stepHasTag($event, 'unsavedChanges'); - + try { // Only for failed tests on CMS page if ($expectsUnsavedChangesModal || $event->getTestResult()->getResultCode() === TestResult::FAILED) { @@ -487,6 +487,18 @@ JS; $this->iDismissTheDialog(); } + /** + * @Given /^I click on the "([^"]+)" element$/ + * @param string $selector + */ + public function iClickOnTheElement($selector) + { + $page = $this->getMainContext()->getSession()->getPage(); + $element = $page->find('css', $selector); + assertNotNull($element, sprintf('Element %s not found', $selector)); + $element->click(); + } + /** * @Given /^I (click|double click) "([^"]*)" in the "([^"]*)" element$/ * @param string $clickType @@ -867,7 +879,7 @@ JS; $linkObj = $regionObj->findLink($link); if (empty($linkObj)) { - throw new \Exception(sprintf('The link "%s" was not found in the region "%s" + throw new \Exception(sprintf('The link "%s" was not found in the region "%s" on the page %s', $link, $region, $this->getSession()->getCurrentUrl())); } @@ -893,7 +905,7 @@ JS; $fieldObj = $regionObj->findField($field); if (empty($fieldObj)) { - throw new \Exception(sprintf('The field "%s" was not found in the region "%s" + throw new \Exception(sprintf('The field "%s" was not found in the region "%s" on the page %s', $field, $region, $this->getSession()->getCurrentUrl())); } @@ -1031,11 +1043,11 @@ JS; ); // Find tables by a field - $candidates += $page->findAll('xpath', "//table//caption[contains(normalize-space(string(.)), + $candidates += $page->findAll('xpath', "//table//caption[contains(normalize-space(string(.)), $selector)]/ancestor-or-self::table[1]"); // Find tables by a .title node - $candidates += $page->findAll('xpath', "//table//*[contains(concat(' ',normalize-space(@class),' '), ' title ') and contains(normalize-space(string(.)), + $candidates += $page->findAll('xpath', "//table//*[contains(concat(' ',normalize-space(@class),' '), ' title ') and contains(normalize-space(string(.)), $selector)]/ancestor-or-self::table[1]"); // Some tables don't have a visible title, so look for a fieldset with data-name instead