/** * Initialize element. * * @param Session $session */ public function __construct(Session $session) { $this->xpathManipulator = new Manipulator(); $this->session = $session; $this->driver = $session->getDriver(); $this->selectorsHandler = $session->getSelectorsHandler(); }
/** * @param string $name * * @return NodeElement */ protected function createElement($name) { if (isset($this->elements[$name])) { return new NodeElement($this->getSelectorAsXpath($this->elements[$name], $this->session->getSelectorsHandler()), $this->session); } throw new \InvalidArgumentException(); }
/** * Attaches Selenium selector, that is later used during annotation processing. * * @param Session $session Mink session. * * @return self */ protected function attachSeleniumSelector(Session $session) { $selectors_handler = $session->getSelectorsHandler(); if (!$selectors_handler->isSelectorRegistered('se')) { $selectors_handler->registerSelector('se', new SeleniumSelector($selectors_handler)); } return $session; }
/** * @param string $name * @param array $parameters * * @return NodeElement */ private function createElement($name, array $parameters = []) { $definedElements = $this->getDefinedElements(); if (!isset($definedElements[$name])) { throw new \InvalidArgumentException(sprintf('Could not find a defined element with name "%s". The defined ones are: %s.', $name, implode(', ', array_keys($definedElements)))); } $elementSelector = strtr($definedElements[$name], $parameters); return new NodeElement($this->getSelectorAsXpath($elementSelector, $this->session->getSelectorsHandler()), $this->session); }
/** * @param $selector * @return \Behat\Mink\Element\NodeElement */ protected function findField($selector) { $selector = $this->escape($selector); $page = $this->session->getPage(); $field = $page->find('named', array('field', $this->session->getSelectorsHandler()->xpathLiteral($selector))); if (!$field) { $field = $page->find('css', $selector); } if (!$field) { \PHPUnit_Framework_Assert::fail("Field matching id|name|label|value or css selector does not exists"); } return $field; }
/** * @param $selector * @return \Behat\Mink\Element\NodeElement|null * @throws \Codeception\Exception\ElementNotFound */ protected function findField($selector) { $page = $this->session->getPage(); $field = $page->find('named', array('field', $this->session->getSelectorsHandler()->xpathLiteral($selector))); if (!$field and Locator::isCSS($selector)) { $field = $page->find('css', $selector); } if (!$field and Locator::isXPath($selector)) { $field = @$page->find('xpath', $selector); } if (!$field) { throw new ElementNotFound($selector, "Field by name, label, CSS or XPath"); } return $field; }
/** * @param $selector * @return \Behat\Mink\Element\NodeElement */ protected function findField($selector) { $page = $this->session->getPage(); $field = $page->find('named', array('field', $this->session->getSelectorsHandler()->xpathLiteral($selector))); try { if (!$field) { $field = $page->find('css', $selector); } } catch (\Symfony\Component\CssSelector\Exception\ParseException $e) { } if (!$field) { $field = @$page->find('xpath', $selector); } if (!$field) { \PHPUnit_Framework_Assert::fail("Field matching id|name|label|value or css or xpath selector does not exist"); } return $field; }
public function testInstantiateWithoutOptionalDeps() { $session = new Session($this->driver); $this->assertInstanceOf('Behat\\Mink\\Selector\\SelectorsHandler', $session->getSelectorsHandler()); }
/** * Returns 'xpath' selector, used to locate this WebElement. * * @param Session $session Session. * * @return string */ protected function seleniumSelectorToXpath(Session $session) { return $session->getSelectorsHandler()->selectorToXpath('se', $this->seleniumSelector); }
public function testGetSelectorsHandler() { $this->assertSame($this->selectorsHandler, $this->session->getSelectorsHandler()); }
<?php require_once __DIR__ . '/vendor/autoload.php'; use Behat\Mink\Driver\GoutteDriver; use Behat\Mink\Session; use Behat\Mink\Driver\Selenium2Driver; //$driver = new GoutteDriver(); $driver = new Selenium2Driver(); $session = new Session($driver); $session->start(); $session->visit('http://jurassicpark.wikia.com'); //echo "Status code: ". $session->getStatusCode() . "\n"; echo "Current URL: " . $session->getCurrentUrl() . "\n"; $page = $session->getPage(); echo "First 160 chars: " . substr($page->getText(), 0, 160) . "\n"; //$anchorEle = $page->find('css', 'h3 a.title'); //$spanEle = $anchorElement->find('css', 'span.emph'); $element = $page->find('css', '.subnav-2 li a'); echo "The link text is: " . $element->getText() . "\n"; $selectorsHandler = $session->getSelectorsHandler(); $element = $page->find('named', array('link', $selectorsHandler->xpathLiteral('Random page'))); $element = $page->findLink('Random page'); echo sprintf("The URL is '%s'\n", $element->getAttribute('href')); $element->click(); $element->click(); echo "Page URL after click: " . $session->getCurrentUrl() . "\n"; //behat-ls/vendor/behat/mink/src/Behat/Mink/Selector/NamedSelector.php@$selectors $session->stop();
/** * Sets session. * * @param Session $session Session. * * @return self */ private function _setSession(Session $session) { $selectors_handler = $session->getSelectorsHandler(); if (!$selectors_handler->isSelectorRegistered('se')) { $selectors_handler->registerSelector('se', new SeleniumSelector()); } $this->_session = $session; return $this; }