public function getMenuItemTypes() { $result = array(); $d = $this->driver; $d->findElement(By::xPath("//a[contains(@onclick, 'option=com_menus&view=menutypes')]"))->click(); $el = $d->waitForElementUntilIsPresent(By::xPath("//iframe[contains(@src, 'option=com_menus&view=menutypes')]")); $el = $d->switchTo()->getFrameByWebElement($el); $groups = $d->findElements(By::className('accordion-group')); foreach ($groups as $group) { $toggle = $group->findElement(By::className('accordion-toggle')); $toggleName = $toggle->getText(); $toggle->click(); $d->waitForElementUntilIsPresent(By::xPath("//div[contains(@class, 'accordion-body in')]/div/ul/li/a")); $menuTypes = $el->findElements(By::xPath("//div[contains(@class, 'accordion-body in')]/div/ul/li/a")); foreach ($menuTypes as $menuType) { $allText = $menuType->getText(); $subTextLength = strlen($menuType->findElement(By::tagName('small'))->getText()); $menuTypeText = substr($allText, 0, strlen($allText) - $subTextLength); $result[] = array('group' => $toggleName, 'type' => $menuTypeText); } } return $result; }