8000 MinkBrowserKitDriver/src/BrowserKitDriver.php at v1.3.0 · minkphp/MinkBrowserKitDriver · GitHub
[go: up one dir, main page]

Skip to content
{"payload":{"allShortcutsEnabled":false,"fileTree":{"src":{"items":[{"name":"BrowserKitDriver.php","path":"src/BrowserKitDriver.php","contentType":"file"}],"totalCount":1},"":{"items":[{"name":"src","path":"src","contentType":"directory"},{"name":"tests","path":"tests","contentType":"directory"},{"name":".gitignore","path":".gitignore","contentType":"file"},{"name":".travis.yml","path":".travis.yml","contentType":"file"},{"name":"CHANGELOG.md","path":"CHANGELOG.md","contentType":"file"},{"name":"LICENSE","path":"LICENSE","contentType":"file"},{"name":"README.md","path":"README.md","contentType":"file"},{"name":"composer.json","path":"composer.json","contentType":"file"},{"name":"phpunit.xml.dist","path":"phpunit.xml.dist","contentType":"file"}],"totalCount":9}},"fileTreeProcessingTime":13.346507,"foldersToFetch":[],"incompleteFileTree":false,"repo":{"id":4486803,"defaultBranch":"master","name":"MinkBrowserKitDriver","ownerLogin":"minkphp","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2012-05-29T19:53:02.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/10380339?v=4","public":true,"private":false,"isOrgOwned":true},"codeLineWrapEnabled":false,"symbolsExpanded":false,"treeExpanded":true,"refInfo":{"name":"v1.3.0","listCacheKey":"v0:1702121558.0","canEdit":false,"refType":"tag","currentOid":"da47df1593dac132f04d24e7277ef40d33d9f201"},"path":"src/BrowserKitDriver.php","currentUser":null,"blob":{"rawLines":["\u003c?php","","/*"," * This file is part of the Behat\\Mink."," * (c) Konstantin Kudryashov \u003cever.zet@gmail.com\u003e"," *"," * For the full copyright and license information, please view the LICENSE"," * file that was distributed with this source code."," */","","namespace Behat\\Mink\\Driver;","","use Behat\\Mink\\Exception\\DriverException;","use Behat\\Mink\\Exception\\UnsupportedDriverActionException;","use Symfony\\Component\\BrowserKit\\Client;","use Symfony\\Component\\BrowserKit\\Cookie;","use Symfony\\Component\\BrowserKit\\Response;","use Symfony\\Component\\DomCrawler\\Crawler;","use Symfony\\Component\\DomCrawler\\Field\\ChoiceFormField;","use Symfony\\Component\\DomCrawler\\Field\\FileFormField;","use Symfony\\Component\\DomCrawler\\Field\\FormField;","use Symfony\\Component\\DomCrawler\\Field\\InputFormField;","use Symfony\\Component\\DomCrawler\\Field\\TextareaFormField;","use Symfony\\Component\\DomCrawler\\Form;","use Symfony\\Component\\HttpKernel\\Client as HttpKernelClient;","","/**"," * Symfony2 BrowserKit driver."," *"," * @author Konstantin Kudryashov \u003cever.zet@gmail.com\u003e"," */","class BrowserKitDriver extends CoreDriver","{"," private $client;",""," /**"," * @var Form[]"," */"," private $forms = array();"," private $serverParameters = array();"," private $started = false;"," private $removeScriptFromUrl = false;"," private $removeHostFromUrl = false;",""," /**"," * Initializes BrowserKit driver."," *"," * @param Client $client BrowserKit client instance"," * @param string|null $baseUrl Base URL for HttpKernel clients"," */"," public function __construct(Client $client, $baseUrl = null)"," {"," $this-\u003eclient = $client;"," $this-\u003eclient-\u003efollowRedirects(true);",""," if ($baseUrl !== null \u0026\u0026 $client instanceof HttpKernelClient) {"," $client-\u003esetServerParameter('SCRIPT_FILENAME', parse_url($baseUrl, PHP_URL_PATH));"," }"," }",""," /**"," * Returns BrowserKit HTTP client instance."," *"," * @return Client"," */"," public function getClient()"," {"," return $this-\u003eclient;"," }",""," /**"," * Tells driver to remove hostname from URL."," *"," * @param Boolean $remove"," *"," * @deprecated Deprecated as of 1.2, to be removed in 2.0. Pass the base url in the constructor instead."," */"," public function setRemoveHostFromUrl($remove = true)"," {"," trigger_error("," 'setRemoveHostFromUrl() is deprecated as of 1.2 and will be removed in 2.0. Pass the base url in the constructor instead.',"," E_USER_DEPRECATED"," );"," $this-\u003eremoveHostFromUrl = (bool) $remove;"," }",""," /**"," * Tells driver to remove script name from URL."," *"," * @param Boolean $remove"," *"," * @deprecated Deprecated as of 1.2, to be removed in 2.0. Pass the base url in the constructor instead."," */"," public function setRemoveScriptFromUrl($remove = true)"," {"," trigger_error("," 'setRemoveScriptFromUrl() is deprecated as of 1.2 and will be removed in 2.0. Pass the base url in the constructor instead.',"," E_USER_DEPRECATED"," );"," $this-\u003eremoveScriptFromUrl = (bool) $remove;"," }",""," /**"," * {@inheritdoc}"," */"," public function start()"," {"," $this-\u003estarted = true;"," }",""," /**"," * {@inheritdoc}"," */"," public function isStarted()"," {"," return $this-\u003estarted;"," }",""," /**"," * {@inheritdoc}"," */"," public function stop()"," {"," $this-\u003ereset();"," $this-\u003estarted = false;"," }",""," /**"," * {@inheritdoc}"," */"," public function reset()"," {"," // Restarting the client resets the cookies and the history"," $this-\u003eclient-\u003erestart();"," $this-\u003eforms = array();"," $this-\u003eserverParameters = array();"," }",""," /**"," * {@inheritdoc}"," */"," public function visit($url)"," {"," $this-\u003eclient-\u003erequest('GET', $this-\u003eprepareUrl($url), array(), array(), $this-\u003eserverParameters);"," $this-\u003eforms = array();"," }",""," /**"," * {@inheritdoc}"," */"," public function getCurrentUrl()"," {"," $request = $this-\u003eclient-\u003egetInternalRequest();",""," if ($request === null) {"," throw new DriverException('Unable to access the request before visiting a page');"," }",""," return $request-\u003egetUri();"," }",""," /**"," * {@inheritdoc}"," */"," public function reload()"," {"," $this-\u003eclient-\u003ereload();"," $this-\u003eforms = array();"," }",""," /**"," * {@inheritdoc}"," */"," public function forward()"," {"," $this-\u003eclient-\u003eforward();"," $this-\u003eforms = array();"," }",""," /**"," * {@inheritdoc}"," */"," public function back()"," {"," $this-\u003eclient-\u003eback();"," $this-\u003eforms = array();"," }",""," /**"," * {@inheritdoc}"," */"," public function setBasicAuth($user, $password)"," {"," if (false === $user) {"," unset($this-\u003eserverParameters['PHP_AUTH_USER'], $this-\u003eserverParameters['PHP_AUTH_PW']);",""," return;"," }",""," $this-\u003eserverParameters['PHP_AUTH_USER'] = $user;"," $this-\u003eserverParameters['PHP_AUTH_PW'] = $password;"," }",""," /**"," * {@inheritdoc}"," */"," public function setRequestHeader($name, $value)"," {"," $contentHeaders = array('CONTENT_LENGTH' =\u003e true, 'CONTENT_MD5' =\u003e true, 'CONTENT_TYPE' =\u003e true);"," $name = str_replace('-', '_', strtoupper($name));",""," // CONTENT_* are not prefixed with HTTP_ in PHP when building $_SERVER"," if (!isset($contentHeaders[$name])) {"," $name = 'HTTP_' . $name;"," }",""," $this-\u003eserverParameters[$name] = $value;"," }",""," /**"," * {@inheritdoc}"," */"," public function getResponseHeaders()"," {"," return $this-\u003egetResponse()-\u003egetHeaders();"," }",""," /**"," * {@inheritdoc}"," */"," public function setCookie($name, $value = null)"," {"," if (null === $value) {"," $this-\u003edeleteCookie($name);",""," return;"," }",""," $jar = $this-\u003eclient-\u003egetCookieJar();"," $jar-\u003eset(new Cookie($name, $value));"," }",""," /**"," * Deletes a cookie by name."," *"," * @param string $name Cookie name."," */"," private function deleteCookie($name)"," {"," $path = $this-\u003egetCookiePath();"," $jar = $this-\u003eclient-\u003egetCookieJar();",""," do {"," if (null !== $jar-\u003eget($name, $path)) {"," $jar-\u003eexpire($name, $path);"," }",""," $path = preg_replace('/.$/', '', $path);"," } while ($path);"," }",""," /**"," * Returns current cookie path."," *"," * @return string"," */"," private function getCookiePath()"," {"," $path = dirname(parse_url($this-\u003egetCurrentUrl(), PHP_URL_PATH));",""," if ('\\\\' === DIRECTORY_SEPARATOR) {"," $path = str_replace('\\\\', '/', $path);"," }",""," return $path;"," }",""," /**"," * {@inheritdoc}"," */"," public function getCookie($name)"," {"," // Note that the following doesn't work well because"," // Symfony\\Component\\BrowserKit\\CookieJar stores cookies by name,"," // path, AND domain and if you don't fill them all in correctly then"," // you won't get the value that you're expecting."," //"," // $jar = $this-\u003eclient-\u003egetCookieJar();"," //"," // if (null !== $cookie = $jar-\u003eget($name)) {"," // return $cookie-\u003egetValue();"," // }",""," $allValues = $this-\u003eclient-\u003egetCookieJar()-\u003eallValues($this-\u003egetCurrentUrl());",""," if (isset($allValues[$name])) {"," return $allValues[$name];"," }",""," return null;"," }",""," /**"," * {@inheritdoc}"," */"," public function getStatusCode()"," {"," return $this-\u003egetResponse()-\u003egetStatus();"," }",""," /**"," * {@inheritdoc}"," */"," public function getContent()"," {"," return $this-\u003egetResponse()-\u003egetContent();"," }",""," /**"," * {@inheritdoc}"," */"," public function findElementXpaths($xpath)"," {"," $nodes = $this-\u003egetCrawler()-\u003efilterXPath($xpath);",""," $elements = array();"," foreach ($nodes as $i =\u003e $node) {"," $elements[] = sprintf('(%s)[%d]', $xpath, $i + 1);"," }",""," return $elements;"," }",""," /**"," * {@inheritdoc}"," */"," public function getTagName($xpath)"," {"," return $this-\u003egetCrawlerNode($this-\u003egetFilteredCrawler($xpath))-\u003enodeName;"," }",""," /**"," * {@inheritdoc}"," */"," public function getText($xpath)"," {"," $text = $this-\u003egetFilteredCrawler($xpath)-\u003etext();"," $text = str_replace(\"\\n\", ' ', $text);"," $text = preg_replace('/ {2,}/', ' ', $text);",""," return trim($text);"," }",""," /**"," * {@inheritdoc}"," */"," public function getHtml($xpath)"," {"," // cut the tag itself (making innerHTML out of outerHTML)"," return preg_replace('/^\\\u003c[^\\\u003e]+\\\u003e|\\\u003c[^\\\u003e]+\\\u003e$/', '', $this-\u003egetOuterHtml($xpath));"," }",""," /**"," * {@inheritdoc}"," */"," public function getOuterHtml($xpath)"," {"," $node = $this-\u003egetCrawlerNode($this-\u003egetFilteredCrawler($xpath));",""," return $node-\u003eownerDocument-\u003esaveHTML($node);"," }",""," /**"," * {@inheritdoc}"," */"," public function getAttribute($xpath, $name)"," {"," $node = $this-\u003egetFilteredCrawler($xpath);",""," if ($this-\u003egetCrawlerNode($node)-\u003ehasAttribute($name)) {"," return $node-\u003eattr($name);"," }",""," return null;"," }",""," /**"," * {@inheritdoc}"," */"," public function getValue($xpath)"," {"," if (in_array($this-\u003egetAttribute($xpath, 'type'), array('submit', 'image', 'button'), true)) {"," return $this-\u003egetAttribute($xpath, 'value');"," }",""," $node = $this-\u003egetCrawlerNode($this-\u003egetFilteredCrawler($xpath));",""," if ('option' === $node-\u003etagName) {"," return $this-\u003egetOptionValue($node);"," }",""," try {"," $field = $this-\u003egetFormField($xpath);"," } catch (\\InvalidArgumentException $e) {"," return $this-\u003egetAttribute($xpath, 'value');"," }",""," return $field-\u003egetValue();"," }",""," /**"," * {@inheritdoc}"," */"," public function setValue($xpath, $value)"," {"," $this-\u003egetFormField($xpath)-\u003esetValue($value);"," }",""," /**"," * {@inheritdoc}"," */"," public function check($xpath)"," {"," $this-\u003egetCheckboxField($xpath)-\u003etick();"," }",""," /**"," * {@inheritdoc}"," */"," public function uncheck($xpath)"," {"," $this-\u003egetCheckboxField($xpath)-\u003euntick();"," }",""," /**"," * {@inheritdoc}"," */"," public function selectOption($xpath, $value, $multiple = false)"," {"," $field = $this-\u003egetFormField($xpath);",""," if (!$field instanceof ChoiceFormField) {"," throw new DriverException(sprintf('Impossible to select an option on the element with XPath \"%s\" as it is not a select or radio input', $xpath));"," }",""," if ($multiple) {"," $oldValue = (array) $field-\u003egetValue();"," $oldValue[] = $value;"," $value = $oldValue;"," }",""," $field-\u003eselect($value);"," }",""," /**"," * {@inheritdoc}"," */"," public function isSelected($xpath)"," {"," $optionValue = $this-\u003egetOptionValue($this-\u003egetCrawlerNode($this-\u003egetFilteredCrawler($xpath)));"," $selectField = $this-\u003egetFormField('(' . $xpath . ')/ancestor-or-self::*[local-name()=\"select\"]');"," $selectValue = $selectField-\u003egetValue();",""," return is_array($selectValue) ? in_array($optionValue, $selectValue, true) : $optionValue === $selectValue;"," }",""," /**"," * {@inheritdoc}"," */"," public function click($xpath)"," {"," $crawler = $this-\u003egetFilteredCrawler($xpath);"," $node = $this-\u003egetCrawlerNode($crawler);"," $tagName = $node-\u003enodeName;",""," if ('a' === $tagName) {"," $this-\u003eclient-\u003eclick($crawler-\u003elink());"," $this-\u003eforms = array();"," } elseif ($this-\u003ecanSubmitForm($node)) {"," $this-\u003esubmit($crawler-\u003eform());"," } elseif ($this-\u003ecanResetForm($node)) {"," $this-\u003eresetForm($node);"," } else {"," $message = sprintf('%%s supports clicking on links and submit or reset buttons only. But \"%s\" provided', $tagName);",""," throw new UnsupportedDriverActionException($message, $this);"," }"," }",""," /**"," * {@inheritdoc}"," */"," public function isChecked($xpath)"," {"," $field = $this-\u003egetFormField($xpath);",""," if (!$field instanceof ChoiceFormField || 'select' === $field-\u003egetType()) {"," throw new DriverException(sprintf('Impossible to get the checked state of the element with XPath \"%s\" as it is not a checkbox or radio input', $xpath));"," }",""," if ('checkbox' === $field-\u003egetType()) {"," return $field-\u003ehasValue();"," }",""," $radio = $this-\u003egetCrawlerNode($this-\u003egetFilteredCrawler($xpath));",""," return $radio-\u003egetAttribute('value') === $field-\u003egetValue();"," }",""," /**"," * {@inheritdoc}"," */"," public function attachFile($xpath, $path)"," {"," $field = $this-\u003egetFormField($xpath);",""," if (!$field instanceof FileFormField) {"," throw new DriverException(sprintf('Impossible to attach a file on the element with XPath \"%s\" as it is not a file input', $xpath));"," }",""," $field-\u003eupload($path);"," }",""," /**"," * {@inheritdoc}"," */"," public function submitForm($xpath)"," {"," $crawler = $this-\u003egetFilteredCrawler($xpath);",""," $this-\u003esubmit($crawler-\u003eform());"," }",""," /**"," * @return Response"," *"," * @throws DriverException If there is not response yet"," */"," protected function getResponse()"," {"," $response = $this-\u003eclient-\u003egetInternalResponse();",""," if (null === $response) {"," throw new DriverException('Unable to access the response before visiting a page');"," }",""," return $response;"," }",""," /**"," * Prepares URL for visiting."," * Removes \"*.php/\" from urls and then passes it to BrowserKitDriver::visit()."," *"," * @param string $url"," *"," * @return string"," */"," protected function prepareUrl($url)"," {"," $replacement = ($this-\u003eremoveHostFromUrl ? '' : '$1') . ($this-\u003eremoveScriptFromUrl ? '' : '$2');",""," return preg_replace('#(https?\\://[^/]+)(/[^/\\.]+\\.php)?#', $replacement, $url);"," }",""," /**"," * Returns form field from XPath query."," *"," * @param string $xpath"," *"," * @return FormField"," *"," * @throws DriverException"," */"," protected function getFormField($xpath)"," {"," $fieldNode = $this-\u003egetCrawlerNode($this-\u003egetFilteredCrawler($xpath));"," $fieldName = str_replace('[]', '', $fieldNode-\u003egetAttribute('name'));",""," $formNode = $this-\u003egetFormNode($fieldNode);"," $formId = $this-\u003egetFormNodeId($formNode);",""," if (!isset($this-\u003eforms[$formId])) {"," $this-\u003eforms[$formId] = new Form($formNode, $this-\u003egetCurrentUrl());"," }",""," if (is_array($this-\u003eforms[$formId][$fieldName])) {"," return $this-\u003eforms[$formId][$fieldName][$this-\u003egetFieldPosition($fieldNode)];"," }",""," return $this-\u003eforms[$formId][$fieldName];"," }",""," /**"," * Returns the checkbox field from xpath query, ensuring it is valid."," *"," * @param string $xpath"," *"," * @return ChoiceFormField"," *"," * @throws DriverException when the field is not a checkbox"," */"," private function getCheckboxField($xpath)"," {"," $field = $this-\u003egetFormField($xpath);",""," if (!$field instanceof ChoiceFormField) {"," throw new DriverException(sprintf('Impossible to check the element with XPath \"%s\" as it is not a checkbox', $xpath));"," }",""," return $field;"," }",""," /**"," * @param \\DOMElement $element"," *"," * @return \\DOMElement"," *"," * @throws DriverException if the form node cannot be found"," */"," private function getFormNode(\\DOMElement $element)"," {"," if ($element-\u003ehasAttribute('form')) {"," $formId = $element-\u003egetAttribute('form');"," $formNode = $element-\u003eownerDocument-\u003egetElementById($formId);",""," if (null === $formNode || 'form' !== $formNode-\u003enodeName) {"," throw new DriverException(sprintf('The selected node has an invalid form attribute (%s).', $formId));"," }",""," return $formNode;"," }",""," $formNode = $element;",""," do {"," // use the ancestor form element"," if (null === $formNode = $formNode-\u003eparentNode) {"," throw new DriverException('The selected node does not have a form ancestor.');"," }"," } while ('form' !== $formNode-\u003enodeName);",""," return $formNode;"," }",""," /**"," * Gets the position of the field node among elements with the same name"," *"," * BrowserKit uses the field name as index to find the field in its Form object."," * When multiple fields have the same name (checkboxes for instance), it will return"," * an array of elements in the order they appear in the DOM."," *"," * @param \\DOMElement $fieldNode"," *"," * @return integer"," */"," private function getFieldPosition(\\DOMElement $fieldNode)"," {"," $elements = $this-\u003egetCrawler()-\u003efilterXPath('//*[@name=\\''.$fieldNode-\u003egetAttribute('name').'\\']');",""," if (count($elements) \u003e 1) {"," // more than one element contains this name !"," // so we need to find the position of $fieldNode"," foreach ($elements as $key =\u003e $element) {"," /** @var \\DOMElement $element */"," if ($element-\u003egetNodePath() === $fieldNode-\u003egetNodePath()) {"," return $key;"," }"," }"," }",""," return 0;"," }",""," private function submit(Form $form)"," {"," $formId = $this-\u003egetFormNodeId($form-\u003egetFormNode());",""," if (isset($this-\u003eforms[$formId])) {"," $this-\u003emergeForms($form, $this-\u003eforms[$formId]);"," }",""," // remove empty file fields from request"," foreach ($form-\u003egetFiles() as $name =\u003e $field) {"," if (empty($field['name']) \u0026\u0026 empty($field['tmp_name'])) {"," $form-\u003eremove($name);"," }"," }",""," foreach ($form-\u003eall() as $field) {"," // Add a fix for https://github.com/symfony/symfony/pull/10733 to support Symfony versions which are not fixed"," if ($field instanceof TextareaFormField \u0026\u0026 null === $field-\u003egetValue()) {"," $field-\u003esetValue('');"," }"," }",""," $this-\u003eclient-\u003esubmit($form);",""," $this-\u003eforms = array();"," }",""," private function resetForm(\\DOMElement $fieldNode)"," {"," $formNode = $this-\u003egetFormNode($fieldNode);"," $formId = $this-\u003egetFormNodeId($formNode);"," unset($this-\u003eforms[$formId]);"," }",""," /**"," * Determines if a node can submit a form."," *"," * @param \\DOMElement $node Node."," *"," * @return boolean"," */"," private function canSubmitForm(\\DOMElement $node)"," {"," $type = $node-\u003ehasAttribute('type') ? $node-\u003egetAttribute('type') : null;",""," if ('input' === $node-\u003enodeName \u0026\u0026 in_array($type, array('submit', 'image'), true)) {"," return true;"," }",""," return 'button' === $node-\u003enodeName \u0026\u0026 (null === $type || 'submit' === $type);"," }",""," /**"," * Determines if a node can reset a form."," *"," * @param \\DOMElement $node Node."," *"," * @return boolean"," */"," private function canResetForm(\\DOMElement $node)"," {"," $type = $node-\u003ehasAttribute('type') ? $node-\u003egetAttribute('type') : null;",""," return in_array($node-\u003enodeName, array('input', 'button'), true) \u0026\u0026 'reset' === $type;"," }",""," /**"," * Returns form node unique identifier."," *"," * @param \\DOMElement $form"," *"," * @return string"," */"," private function getFormNodeId(\\DOMElement $form)"," {"," return md5($form-\u003egetLineNo() . $form-\u003egetNodePath() . $form-\u003enodeValue);"," }",""," /**"," * Gets the value of an option element"," *"," * @param \\DOMElement $option"," *"," * @return string"," *"," * @see \\Symfony\\Component\\DomCrawler\\Field\\ChoiceFormField::buildOptionValue"," */"," private function getOptionValue(\\DOMElement $option)"," {"," if ($option-\u003ehasAttribute('value')) {"," return $option-\u003egetAttribute('value');"," }",""," if (!empty($option-\u003enodeValue)) {"," return $option-\u003enodeValue;"," }",""," return '1'; // DomCrawler uses 1 by default if there is no text in the option"," }",""," /**"," * Merges second form values into first one."," *"," * @param Form $to merging target"," * @param Form $from merging source"," */"," private function mergeForms(Form $to, Form $from)"," {"," foreach ($from-\u003eall() as $name =\u003e $field) {"," $fieldReflection = new \\ReflectionObject($field);"," $nodeReflection = $fieldReflection-\u003egetProperty('node');"," $valueReflection = $fieldReflection-\u003egetProperty('value');",""," $nodeReflection-\u003esetAccessible(true);"," $valueReflection-\u003esetAccessible(true);",""," $isIgnoredField = $field instanceof InputFormField \u0026\u0026"," in_array($nodeReflection-\u003egetValue($field)-\u003egetAttribute('type'), array('submit', 'button', 'image'), true);",""," if (!$isIgnoredField) {"," $valueReflection-\u003esetValue($to[$name], $valueReflection-\u003egetValue($field));"," }"," }"," }",""," /**"," * Returns DOMElement from crawler instance."," *"," * @param Crawler $crawler"," *"," * @return \\DOMElement"," *"," * @throws DriverException when the node does not exist"," */"," private function getCrawlerNode(Crawler $crawler)"," {"," $crawler-\u003erewind();"," $node = $crawler-\u003ecurrent();",""," if (null !== $node) {"," return $node;"," }",""," throw new DriverException('The element does not exist');"," }",""," /**"," * Returns a crawler filtered for the given XPath, requiring at least 1 result."," *"," * @param string $xpath"," *"," * @return Crawler"," *"," * @throws DriverException when no matching elements are found"," */"," private function getFilteredCrawler($xpath)"," {"," if (!count($crawler = $this-\u003egetCrawler()-\u003efilterXPath($xpath))) {"," throw new DriverException(sprintf('There is no element matching XPath \"%s\"', $xpath));"," }",""," return $crawler;"," }",""," /**"," * Returns crawler instance (got from client)."," *"," * @return Crawler"," *"," * @throws DriverException"," */"," private function getCrawler()"," {"," $crawler = $this-\u003eclient-\u003egetCrawler();",""," if (null === $crawler) {"," throw new DriverException('Unable to access the response content before visiting a page');"," }",""," return $crawler;"," }","}"],"stylingDirectives":null,"colorizedLines":null,"csv":null,"csvError":null,"dependabotInfo":{"showConfigurationBanner":false,"configFilePath":null,"networkDependabotPath":"/minkphp/MinkBrowserKitDriver/network/updates","dismissConfigurationNoticePath":"/settings/dismiss-notice/dependabot_configuration_notice","configurationNoticeDismissed":null},"displayName":"BrowserKitDriver.php","displayUrl":"https://github.com/minkphp/MinkBrowserKitDriver/blob/v1.3.0/src/BrowserKitDriver.php?raw=true","headerInfo":{"blobSize":"22.1 KB","deleteTooltip":"You must be signed in to make or propose changes","editTooltip":"You must be signed in to make or propose changes","ghDesktopPath":null,"isGitLfs":false,"onBranch":false,"shortPath":"70682e7","siteNavLoginPath":"/login?return_to=https%3A%2F%2Fgithub.com%2Fminkphp%2FMinkBrowserKitDriver%2Fblob%2Fv1.3.0%2Fsrc%2FBrowserKitDriver.php","isCSV":false,"isRichtext":false,"toc":null,"lineInfo":{"truncatedLoc":"855","truncatedSloc":"723"},"mode":"file"},"image":false,"isCodeownersFile":null,"isPlain":false,"isValidLegacyIssueTemplate":false,"issueTemplate":null,"discussionTemplate":null,"language":"PHP","languageID":272,"large":false,"planSupportInfo":{"repoIsFork":null,"repoOwnedByCurrentUser":null,"requestFullPath":"/minkphp/MinkBrowserKitDriver/blob/v1.3.0/src/BrowserKitDriver.php","showFreeOrgGatedFeatureMessage":null,"showPlanSupportBanner":null,"upgradeDataAttributes":null,"upgradePath":null},"publishBannersInfo":{"dismissActionNoticePath":"/settings/dismiss-notice/publish_action_from_dockerfile","releasePath":"/minkphp/MinkBrowserKitDriver/releases/new?marketplace=true","showPublishActionBanner":false},"rawBlobUrl":"https://github.com/minkphp/MinkBrowserKitDriver/raw/refs/tags/v1.3.0/src/BrowserKitDriver.php","renderImageOrRaw":false,"richText":null,"renderedFileInfo":null,"shortPath":null,"symbolsEnabled":true,"tabSize":8,"topBannersInfo":{"overridingGlobalFundingFile":false,"globalPreferredFundingPath":null,"showInvalidCitationWarning":false,"citationHelpUrl":"https://docs.github.com/github/creating-cloning-and-archiving-repositories/creating-a-repository-on-github/about-citation-files","actionsOnboardingTip":null},"truncated":false,"viewable":true,"workflowRedirectUrl":null,"symbols":{"timed_out":false,"not_analyzed":false,"symbols":[{"name":"Behat\\Mink\\Driver","kind":"module","ident_start":245,"ident_end":262,"extent_start":235,"extent_end":263,"fully_qualified_name":"Behat\\Mink\\Driver","ident_utf16":{"start":{"line_number":10,"utf16_col":10},"end":{"line_number":10,"utf16_col":27}},"extent_utf16":{"start":{"line_number":10,"utf16_col":0},"end":{"line_number":10,"utf16_col":28}}},{"name":"BrowserKitDriver","kind":"class","ident_start":1009,"ident_end":1025,"extent_start":1003,"extent_end":22652,"fully_qualified_name":"BrowserKitDriver","ident_utf16":{"start":{"line_number":31,"utf16_col":6},"end":{"line_number":31,"utf16_col":22}},"extent_utf16":{"start":{"line_number":31,"utf16_col":0},"end":{"line_number":854,"utf16_col":1}}},{"name":"client","kind":"field","ident_start":1060,"ident_end":1066,"extent_start":1051,"extent_end":1067,"fully_qualified_name":"BrowserKitDriver.client","ident_utf16":{"start":{"line_number":33,"utf16_col":13},"end":{"line_number":33,"utf16_col":19}},"extent_utf16":{"start":{"line_number":33,"utf16_col":4},"end":{"line_number":33,"utf16_col":20}}},{"name":"forms","kind":"field","ident_start":1117,"ident_end":1122,"extent_start":1108,"extent_end":1133,"fully_qualified_name":"BrowserKitDriver.forms","ident_utf16":{"start":{"line_number":38,"utf16_col":13},"end":{"line_number":38,"utf16_col":18}},"extent_utf16":{"start":{"line_number":38,"utf16_col":4},"end":{"line_number":38,"utf16_col":29}}},{"name":"serverParameters","kind":"field","ident_start":1147,"ident_end":1163,"extent_start":1138,"extent_end":1174,"fully_qualified_name":"BrowserKitDriver.serverParameters","ident_utf16":{"start":{"line_number":39,"utf16_col":13},"end":{"line_number":39,"utf16_col":29}},"extent_utf16":{"start":{"line_number":39,"utf16_col":4},"end":{"line_number":39,"utf16_col":40}}},{"name":"started","kind":"field","ident_start":1188,"ident_end":1195,"extent_start":1179,"extent_end":1204,"fully_qualified_name":"BrowserKitDriver.started","ident_utf16":{"start":{"line_number":40,"utf16_col":13},"end":{"line_number":40,"utf16_col":20}},"extent_utf16":{"start":{"line_number":40,"utf16_col":4},"end":{"line_number":40,"utf16_col":29}}},{"name":"removeScriptFromUrl","kind":"field","ident_start":1218,"ident_end":1237,"extent_start":1209,"extent_end":1246,"fully_qualified_name":"BrowserKitDriver.removeScriptFromUrl","ident_utf16":{"start":{"line_number":41,"utf16_col":13},"end":{"line_number":41,"utf16_col":32}},"extent_utf16":{"start":{"line_number":41,"utf16_col":4},"end":{"line_number":41,"utf16_col":41}}},{"name":"removeHostFromUrl","kind":"field","ident_start":1260,"ident_end":1277,"extent_start":1251,"extent_end":1286,"fully_qualified_name":"BrowserKitDriver.removeHostFromUrl","ident_utf16":{"start":{"line_number":42,"utf16_col":13},"end":{"line_number":42,"utf16_col":30}},"extent_utf16":{"start":{"line_number":42,"utf16_col":4},"end":{"line_number":42,"utf16_col":39}}},{"name":"__construct","kind":"method","ident_start":1498,"ident_end":1509,"extent_start":1482,"extent_end":1811,"fully_qualified_name":"BrowserKitDriver.__construct","ident_utf16":{"start":{"line_number":50,"utf16_col":20},"end":{"line_number":50,"utf16_col":31}},"extent_utf16":{"start":{"line_number":50,"utf16_col":4},"end":{"line_number":58,"utf16_col":5}}},{"name":"getClient","kind":"method","ident_sta 79E7 rt":1926,"ident_end":1935,"extent_start":1910,"extent_end":1979,"fully_qualified_name":"BrowserKitDriver.getClient","ident_utf16":{"start":{"line_number":65,"utf16_col":20},"end":{"line_number":65,"utf16_col":29}},"extent_utf16":{"start":{"line_number":65,"utf16_col":4},"end":{"line_number":68,"utf16_col":5}}},{"name":"setRemoveHostFromUrl","kind":"method","ident_start":2219,"ident_end":2239,"extent_start":2203,"extent_end":2518,"fully_qualified_name":"BrowserKitDriver.setRemoveHostFromUrl","ident_utf16":{"start":{"line_number":77,"utf16_col":20},"end":{"line_number":77,"utf16_col":40}},"extent_utf16":{"start":{"line_number":77,"utf16_col":4},"end":{"line_number":84,"utf16_col":5}}},{"name":"setRemoveScriptFromUrl","kind":"method","ident_start":2761,"ident_end":2783,"extent_start":2745,"extent_end":3066,"fully_qualified_name":"BrowserKitDriver.setRemoveScriptFromUrl","ident_utf16":{"start":{"line_number":93,"utf16_col":20},"end":{"line_number":93,"utf16_col":42}},"extent_utf16":{"start":{"line_number":93,"utf16_col":4},"end":{"line_number":100,"utf16_col":5}}},{"name":"start","kind":"method","ident_start":3125,"ident_end":3130,"extent_start":3109,"extent_end":3175,"fully_qualified_name":"BrowserKitDriver.start","ident_utf16":{"start":{"line_number":105,"utf16_col":20},"end":{"line_number":105,"utf16_col":25}},"extent_utf16":{"start":{"line_number":105,"utf16_col":4},"end":{"line_number":108,"utf16_col":5}}},{"name":"isStarted","kind":"method","ident_start":3234,"ident_end":3243,"extent_start":3218,"extent_end":3288,"fully_qualified_name":"BrowserKitDriver.isStarted","ident_utf16":{"start":{"line_number":113,"utf16_col":20},"end":{"line_number":113,"utf16_col":29}},"extent_utf16":{"start":{"line_number":113,"utf16_col":4},"end":{"line_number":116,"utf16_col":5}}},{"name":"stop","kind":"method","ident_start":3347,"ident_end":3351,"extent_start":3331,"extent_end":3421,"fully_qualified_name":"BrowserKitDriver.stop","ident_utf16":{"start":{"line_number":121,"utf16_col":20},"end":{"line_number":121,"utf16_col":24}},"extent_utf16":{"start":{"line_number":121,"utf16_col":4},"end":{"line_number":125,"utf16_col":5}}},{"name":"reset","kind":"method","ident_start":3480,"ident_end":3485,"extent_start":3464,"extent_end":3676,"fully_qualified_name":"BrowserKitDriver.reset","ident_utf16":{"start":{"line_number":130,"utf16_col":20},"end":{"line_number":130,"utf16_col":25}},"extent_utf16":{"start":{"line_number":130,"utf16_col":4},"end":{"line_number":136,"utf16_col":5}}},{"name":"visit","kind":"method","ident_start":3735,"ident_end":3740,"extent_start":3719,"extent_end":3897,"fully_qualified_name":"BrowserKitDriver.visit","ident_utf16":{"start":{"line_number":141,"utf16_col":20},"end":{"line_number":141,"utf16_col":25}},"extent_utf16":{"start":{"line_number":141,"utf16_col":4},"end":{"line_number":145,"utf16_col":5}}},{"name":"getCurrentUrl","kind":"method","ident_start":3956,"ident_end":3969,"extent_start":3940,"extent_end":4213,"fully_qualified_name":"BrowserKitDriver.getCurrentUrl","ident_utf16":{"start":{"line_number":150,"utf16_col":20},"end":{"line_number":150,"utf16_col":33}},"extent_utf16":{"start":{"line_number":150,"utf16_col":4},"end":{"line_number":159,"utf16_col":5}}},{"name":"reload","kind":"method","ident_start":4272,"ident_end":4278,"extent_start":4256,"extent_end":4357,"fully_qualified_name":"BrowserKitDriver.reload","ident_utf16":{"start":{"line_number":164,"utf16_col":20},"end":{"line_number":164,"utf16_col":26}},"extent_utf16":{"start":{"line_number":164,"utf16_col":4},"end":{"line_number":168,"utf16_col":5}}},{"name":"forward","kind":"method","ident_start":4416,"ident_end":4423,"extent_start":4400,"extent_end":4503,"fully_qualified_name":"BrowserKitDriver.forward","ident_utf16":{"start":{"line_number":173,"utf16_col":20},"end":{"line_number":173,"utf16_col":27}},"extent_utf16":{"start":{"line_number":173,"utf16_col":4},"end":{"line_number":177,"utf16_col":5}}},{"name":"back","kind":"method","ident_start":4562,"ident_end":4566,"extent_start":4546,"extent_end":4643,"fully_qualified_name":"BrowserKitDriver.back","ident_utf16":{"start":{"line_number":182,"utf16_col":20},"end":{"line_number":182,"utf16_col":24}},"extent_utf16":{"start":{"line_number":182,"utf16_col":4},"end":{"line_number":186,"utf16_col":5}}},{"name":"setBasicAuth","kind":"method","ident_start":4702,"ident_end":4714,"extent_start":4686,"extent_end":5026,"fully_qualified_name":"BrowserKitDriver.setBasicAuth","ident_utf16":{"start":{"line_number":191,"utf16_col":20},"end":{"line_number":191,"utf16_col":32}},"extent_utf16":{"start":{"line_number":191,"utf16_col":4},"end":{"line_number":201,"utf16_col":5}}},{"name":"setRequestHeader","kind":"method","ident_start":5085,"ident_end":5101,"extent_start":5069,"extent_end":5515,"fully_qualified_name":"BrowserKitDriver.setRequestHeader","ident_utf16":{"start":{"line_number":206,"utf16_col":20},"end":{"line_number":206,"utf16_col":36}},"extent_utf16":{"start":{"line_number":206,"utf16_col":4},"end":{"line_number":217,"utf16_col":5}}},{"name":"getResponseHeaders","kind":"method","ident_start":5574,"ident_end":5592,"extent_start":5558,"extent_end":5657,"fully_qualified_name":"BrowserKitDriver.getResponseHeaders","ident_utf16":{"start":{"line_number":222,"utf16_col":20},"end":{"line_number":222,"utf16_col":38}},"extent_utf16":{"start":{"line_number":222,"utf16_col":4},"end":{"line_number":225,"utf16_col":5}}},{"name":"setCookie","kind":"method","ident_start":5716,"ident_end":5725,"extent_start":5700,"extent_end":5954,"fully_qualified_name":"BrowserKitDriver.setCookie","ident_utf16":{"start":{"line_number":230,"utf16_col":20},"end":{"line_number":230,"utf16_col":29}},"extent_utf16":{"start":{"line_number":230,"utf16_col":4},"end":{"line_number":240,"utf16_col":5}}},{"name":"deleteCookie","kind":"method","ident_start":6073,"ident_end":6085,"extent_start":6056,"extent_end":6393,"fully_qualified_name":"BrowserKitDriver.deleteCookie","ident_utf16":{"start":{"line_number":247,"utf16_col":21},"end":{"line_number":247,"utf16_col":33}},"extent_utf16":{"start":{"line_number":247,"utf16_col":4},"end":{"line_number":259,"utf16_col":5}}},{"name":"getCookiePath","kind":"method","ident_start":6497,"ident_end":6510,"extent_start":6480,"extent_end":6727,"fully_qualified_name":"BrowserKitDriver.getCookiePath","ident_utf16":{"start":{"line_number":266,"utf16_col":21},"end":{"line_number":266,"utf16_col":34}},"extent_utf16":{"start":{"line_number":266,"utf16_col":4},"end":{"line_number":275,"utf16_col":5}}},{"name":"getCookie","kind":"method","ident_start":6786,"ident_end":6795,"extent_start":6770,"extent_end":7464,"fully_qualified_name":"BrowserKitDriver.getCookie","ident_utf16":{"start":{"line_number":280,"utf16_col":20},"end":{"line_number":280,"utf16_col":29}},"extent_utf16":{"start":{"line_number":280,"utf16_col":4},"end":{"line_number":300,"utf16_col":5}}},{"name":"getStatusCode","kind":"method","ident_start":7523,"ident_end":7536,"extent_start":7507,"extent_end":7600,"fully_qualified_name":"BrowserKitDriver.getStatusCode","ident_utf16":{"start":{"line_number":305,"utf16_col":20},"end":{"line_number":305,"utf16_col":33}},"extent_utf16":{"start":{"line_number":305,"utf16_col":4},"end":{"line_number":308,"utf16_col":5}}},{"name":"getContent","kind":"method","ident_start":7659,"ident_end":7669,"extent_start":7643,"extent_end":7734,"fully_qualified_name":"BrowserKitDriver.getContent","ident_utf16":{"start":{"line_number":313,"utf16_col":20},"end":{"line_number":313,"utf16_col":30}},"extent_utf16":{"start":{"line_number":313,"utf16_col":4},"end":{"line_number":316,"utf16_col":5}}},{"name":"findElementXpaths","kind":"method","ident_start":7793,"ident_end":7810,"extent_start":7777,"extent_end":8061,"fully_qualified_name":"BrowserKitDriver.findElementXpaths","ident_utf16":{"start":{"line_number":321,"utf16_col":20},"end":{"line_number":321,"utf16_col":37}},"extent_utf16":{"start":{"line_number":321,"utf16_col":4},"end":{"line_number":331,"utf16_col":5}}},{"name":"getTagName","kind":"method","ident_start":8120,"ident_end":8130,"extent_start":8104,"extent_end":8233,"fully_qualified_name":"BrowserKitDriver.getTagName","ident_utf16":{"start":{"line_number":336,"utf16_col":20},"end":{"line_number":336,"utf16_col":30}},"extent_utf16":{"start":{"line_number":336,"utf16_col":4},"end":{"line_number":339,"utf16_col":5}}},{"name":"getText","kind":"method","ident_start":8292,"ident_end":8299,"extent_start":8276,"extent_end":8507,"fully_qualified_name":"BrowserKitDriver.getText","ident_utf16":{"start":{"line_number":344,"utf16_col":20},"end":{"line_number":344,"utf16_col":27}},"extent_utf16":{"start":{"line_number":344,"utf16_col":4},"end":{"line_number":351,"utf16_col":5}}},{"name":"getHtml","kind":"method","ident_start":8566,"ident_end":8573,"extent_start":8550,"extent_end":8750,"fully_qualified_name":"BrowserKitDriver.getHtml","ident_utf16":{"start":{"line_number":356,"utf16_col":20},"end":{"line_number":356,"utf16_col":27}},"extent_utf16":{"start":{"line_number":356,"utf16_col":4},"end":{"line_number":360,"utf16_col":5}}},{"name":"getOuterHtml","kind":"method","ident_start":8809,"ident_end":8821,"extent_start":8793,"extent_end":8970,"fully_qualified_name":"BrowserKitDriver.getOuterHtml","ident_utf16":{"start":{"line_number":365,"utf16_col":20},"end":{"line_number":365,"utf16_col":32}},"extent_utf16":{"start":{"line_number":365,"utf16_col":4},"end":{"line_number":370,"utf16_col":5}}},{"name":"getAttribute","kind":"method","ident_start":9029,"ident_end":9041,"extent_start":9013,"extent_end":9256,"fully_qualified_name":"BrowserKitDriver.getAttribute","ident_utf16":{"start":{"line_number":375,"utf16_col":20},"end":{"line_number":375,"utf16_col":32}},"extent_utf16":{"start":{"line_number":375,"utf16_col":4},"end":{"line_number":384,"utf16_col":5}}},{"name":"getValue","kind":"method","ident_start":9315,"ident_end":9323,"extent_start":9299,"extent_end":9908,"fully_qualified_name":"BrowserKitDriver.getValue","ident_utf16":{"start":{"line_number":389,"utf16_col":20},"end":{"line_number":389,"utf16_col":28}},"extent_utf16":{"start":{"line_number":389,"utf16_col":4},"end":{"line_number":408,"utf16_col":5}}},{"name":"setValue","kind":"method","ident_start":9967,"ident_end":9975,"extent_start":9951,"extent_end":10058,"fully_qualified_name":"BrowserKitDriver.setValue","ident_utf16":{"start":{"line_number":413,"utf16_col":20},"end":{"line_number":413,"utf16_col":28}},"extent_utf16":{"start":{"line_number":413,"utf16_col":4},"end":{"line_number":416,"utf16_col":5}}},{"name":"check","kind":"method","ident_start":10117,"ident_end":10122,"extent_start":10101,"extent_end":10191,"fully_qualified_name":"BrowserKitDriver.check","ident_utf16":{"start":{"line_number":421,"utf16_col":20},"end":{"line_number":421,"utf16_col":25}},"extent_utf16":{"start":{"line_number":421,"utf16_col":4},"end":{"line_number":424,"utf16_col":5}}},{"name":"uncheck","kind":"method","ident_start":10250,"ident_end":10257,"extent_start":10234,"extent_end":10328,"fully_qualified_name":"BrowserKitDriver.uncheck","ident_utf16":{"start":{"line_number":429,"utf16_col":20},"end":{"line_number":429,"utf16_col":27}},"extent_utf16":{"start":{"line_number":429,"utf16_col":4},"end":{"line_number":432,"utf16_col":5}}},{"name":"selectOption","kind":"method","ident_start":10387,"ident_end":10399,"extent_start":10371,"extent_end":10905,"fully_qualified_name":"BrowserKitDriver.selectOption","ident_utf16":{"start":{"line_number":437,"utf16_col":20},"end":{"line_number":437,"utf16_col":32}},"extent_utf16":{"start":{"line_number":437,"utf16_col":4},"end":{"line_number":452,"utf16_col":5}}},{"name":"isSelected","kind":"method","ident_start":10964,"ident_end":10974,"extent_start":10948,"extent_end":11371,"fully_qualified_name":"BrowserKitDriver.isSelected","ident_utf16":{"start":{"line_number":457,"utf16_col":20},"end":{"line_number":457,"utf16_col":30}},"extent_utf16":{"start":{"line_number":457,"utf16_col":4},"end":{"line_number":464,"utf16_col":5}}},{"name":"click","kind":"method","ident_start":11430,"ident_end":11435,"extent_start":11414,"extent_end":12123,"fully_qualified_name":"BrowserKitDriver.click","ident_utf16":{"start":{"line_number":469,"utf16_col":20},"end":{"line_number":469,"utf16_col":25}},"extent_utf16":{"start":{"line_number":469,"utf16_col":4},"end":{"line_number":487,"utf16_col":5}}},{"name":"isChecked","kind":"method","ident_start":12182,"ident_end":12191,"extent_start":12166,"extent_end":12761,"fully_qualified_name":"BrowserKitDriver.isChecked","ident_utf16":{"start":{"line_number":492,"utf16_col":20},"end":{"line_number":492,"utf16_col":29}},"extent_utf16":{"start":{"line_number":492,"utf16_col":4},"end":{"line_number":507,"utf16_col":5}}},{"name":"attachFile","kind":"method","ident_start":12820,"ident_end":12830,"extent_start":12804,"extent_end":13138,"fully_qualified_name":"BrowserKitDriver.attachFile","ident_utf16":{"start":{"line_number":512,"utf16_col":20},"end":{"line_number":512,"utf16_col":30}},"extent_utf16":{"start":{"line_number":512,"utf16_col":4},"end":{"line_number":521,"utf16_col":5}}},{"name":"submitForm","kind":"method","ident_start":13197,"ident_end":13207,"extent_start":13181,"extent_end":13323,"fully_qualified_name":"BrowserKitDriver.submitForm","ident_utf16":{"start":{"line_number":526,"utf16_col":20},"end":{"line_number":526,"utf16_col":30}},"extent_utf16":{"start":{"line_number":526,"utf16_col":4},"end":{"line_number":531,"utf16_col":5}}},{"name":"getResponse","kind":"method","ident_start":13455,"ident_end":13466,"extent_start":13436,"extent_end":13705,"fully_qualified_name":"BrowserKitDriver.getResponse","ident_utf16":{"start":{"line_number":538,"utf16_col":23},"end":{"line_number":538,"utf16_col":34}},"extent_utf16":{"start":{"line_number":538,"utf16_col":4},"end":{"line_number":547,"utf16_col":5}}},{"name":"prepareUrl","kind":"method","ident_start":13925,"ident_end":13935,"extent_start":13906,"extent_end":14148,"fully_qualified_name":"BrowserKitDriver.prepareUrl","ident_utf16":{"start":{"line_number":557,"utf16_col":23},"end":{"line_number":557,"utf16_col":33}},"extent_utf16":{"start":{"line_number":557,"utf16_col":4},"end":{"line_number":562,"utf16_col":5}}},{"name":"getFormField","kind":"method","ident_start":14338,"ident_end":14350,"extent_start":14319,"extent_end":14980,"fully_qualified_name":"BrowserKitDriver.getFormField","ident_utf16":{"start":{"line_number":573,"utf16_col":23},"end":{"line_number":573,"utf16_col":35}},"extent_utf16":{"start":{"line_number":573,"utf16_col":4},"end":{"line_number":590,"utf16_col":5}}},{"name":"getCheckboxField","kind":"method","ident_start":15237,"ident_end":15253,"extent_start":15220,"extent_end":15535,"fully_qualified_name":"BrowserKitDriver.getCheckboxField","ident_utf16":{"start":{"line_number":601,"utf16_col":21},"end":{"line_number":601,"utf16_col":37}},"extent_utf16":{"start":{"line_number":601,"utf16_col":4},"end":{"line_number":610,"utf16_col":5}}},{"name":"getFormNode","kind":"method","ident_start":15714,"ident_end":15725,"extent_start":15697,"extent_end":16517,"fully_qualified_name":"BrowserKitDriver.getFormNode","ident_utf16":{"start":{"line_number":619,"utf16_col":21},"end":{"line_number":619,"utf16_col":32}},"extent_utf16":{"start":{"line_number":619,"utf16_col":4},"end":{"line_number":642,"utf16_col":5}}},{"name":"getFieldPosition","kind":"method","ident_start":16953,"ident_end":16969,"extent_start":16936,"extent_end":17544,"fully_qualified_name":"BrowserKitDriver.getFieldPosition","ident_utf16":{"start":{"line_number":655,"utf16_col":21},"end":{"line_number":655,"utf16_col":37}},"extent_utf16":{"start":{"line_number":655,"utf16_col":4},"end":{"line_number":671,"utf16_col":5}}},{"name":"submit","kind":"method","ident_start":17567,"ident_end":17573,"extent_start":17550,"extent_end":18401,"fully_qualified_name":"BrowserKitDriver.submit","ident_utf16":{"start":{"line_number":673,"utf16_col":21},"end":{"line_number":673,"utf16_col":27}},"extent_utf16":{"start":{"line_number":673,"utf16_col":4},"end":{"line_number":698,"utf16_col":5}}},{"name":"resetForm","kind":"method","ident_start":18424,"ident_end":18433,"extent_start":18407,"extent_end":18610,"fully_qualified_name":"BrowserKitDriver.resetForm","ident_utf16":{"start":{"line_number":700,"utf16_col":21},"end":{"line_number":700,"utf16_col":30}},"extent_utf16":{"start":{"line_number":700,"utf16_col":4},"end":{"line_number":705,"utf16_col":5}}},{"name":"canSubmitForm","kind":"method","ident_start":18771,"ident_end":18784,"extent_start":18754,"extent_end":19115,"fully_qualified_name":"BrowserKitDriver.canSubmitForm","ident_utf16":{"start":{"line_number":714,"utf16_col":21},"end":{"line_number":714,"utf16_col":34}},"extent_utf16":{"start":{"line_number":714,"utf16_col":4},"end":{"line_number":723,"utf16_col":5}}},{"name":"canResetForm","kind":"method","ident_start":19275,"ident_end":19287,"extent_start":19258,"extent_end":19496,"fully_qualified_name":"BrowserKitDriver.canResetForm","ident_utf16":{"start":{"line_number":732,"utf16_col":21},"end":{"line_number":732,"utf16_col":33}},"extent_utf16":{"start":{"line_number":732,"utf16_col":4},"end":{"line_number":737,"utf16_col":5}}},{"name":"getFormNodeId","kind":"method","ident_start":19647,"ident_end":19660,"extent_start":19630,"extent_end":19773,"fully_qualified_name":"BrowserKitDriver.getFormNodeId","ident_utf16":{"start":{"line_number":746,"utf16_col":21},"end":{"line_number":746,"utf16_col":34}},"extent_utf16":{"start":{"line_number":746,"utf16_col":4},"end":{"line_number":749,"utf16_col":5}}},{"name":"getOptionValue","kind":"method","ident_start":20014,"ident_end":20028,"extent_start":19997,"extent_end":20347,"fully_qualified_name":"BrowserKitDriver.getOptionValue","ident_utf16":{"start":{"line_number":760,"utf16_col":21},"end":{"line_number":760,"utf16_col":35}},"extent_utf16":{"start":{"line_number":760,"utf16_col":4},"end":{"line_number":771,"utf16_col":5}}},{"name":"mergeForms","kind":"method","ident_start":20522,"ident_end":20532,"extent_start":20505,"extent_end":21268,"fully_qualified_name":"BrowserKitDriver.mergeForms","ident_utf16":{"start":{"line_number":779,"utf16_col":21},"end":{"line_number":779,"utf16_col":31}},"extent_utf16":{"start":{"line_number":779,"utf16_col":4},"end":{"line_number":796,"utf16_col":5}}},{"name":"getCrawlerNode","kind":"method","ident_start":21495,"ident_end":21509,"extent_start":21478,"extent_end":21737,"fully_qualified_name":"BrowserKitDriver.getCrawlerNode","ident_utf16":{"start":{"line_number":807,"utf16_col":21},"end":{"line_number":807,"utf16_col":35}},"extent_utf16":{"start":{"line_number":807,"utf16_col":4},"end":{"line_number":817,"utf16_col":5}}},{"name":"getFilteredCrawler","kind":"method","ident_start":21999,"ident_end":22017,"extent_start":21982,"extent_end":22247,"fully_qualified_name":"BrowserKitDriver.getFilteredCrawler","ident_utf16":{"start":{"line_number":828,"utf16_col":21},"end":{"line_number":828,"utf16_col":39}},"extent_utf16":{"start":{"line_number":828,"utf16_col":4},"end":{"line_number":835,"utf16_col":5}}},{"name":"getCrawler","kind":"method","ident_start":22405,"ident_end":22415,"extent_start":22388,"extent_end":22650,"fully_qualified_name":"BrowserKitDriver.getCrawler","ident_utf16":{"start":{"line_number":844,"utf16_col":21},"end":{"line_number":844,"utf16_col":31}},"extent_utf16":{"start":{"line_number":844,"utf16_col":4},"end":{"line_number":853,"utf16_col":5}}}]}},"copilotInfo":null,"copilotAccessAllowed":false,"modelsAccessAllowed":false,"modelsRepoIntegrationEnabled":false,"csrf_tokens":{"/minkphp/MinkBrowserKitDriver/branches":{"post":"dQ55j4QUKHb79wq36MQ4v-Uw-pUUWuUeMHHSZmf9CRXOmXegMuXXwrNSp__l2O8HyBWhP1PFhZI9EXS4R6IcBQ"},"/repos/preferences":{"post":"r8BpabQGCkMbrZXmflf4G8zNhsWjnmFwZ3xbCj1hdjj16OHjoENx5l_QqWB-ZW0-95-h5PsaqASJZ8r2M-2y3Q"}}},"title":"MinkBrowserKitDriver/src/BrowserKitDriver.php at v1.3.0 · minkphp/MinkBrowserKitDriver","appPayload":{"helpUrl":"https://docs.github.com","findFileWorkerPath":"/assets-cdn/worker/find-file-worker-7d7eb7c71814.js","findInFileWorkerPath":"/assets-cdn/worker/find-in-file-worker-1ae9fa256942.js","githubDevUrl":null,"enabled_features":{"code_nav_ui_events":false,"react_blob_overlay":false,"accessible_code_button":true,"github_models_repo_integration":false}}}
0