protected function getDefaultConfiguration() { $config = parent::getDefaultConfiguration(); $capabilitities = $config['definition']['class']['Magium\\WebDriver\\WebDriverFactory']['create']['desired_capabilities']['default']; if ($capabilitities instanceof DesiredCapabilities) { /* * Following is browser-specific functionality. Non-browser-generic commands can be set here. This example * changes the language for the browser to Spanish. * * The code for the HTML page is * <html><body><?php echo $_SERVER['HTTP_ACCEPT_LANGUAGE']; ?></body></html> */ $options = new ChromeOptions(); $options->addArguments(['--lang=es']); $capabilitities->setCapability(ChromeOptions::CAPABILITY, $options); } return $config; }
function getWebDriverInstance() { // Provide a re-usable webdriver for selenium tests. global $_INI; static $webDriver; if (!isset($webDriver)) { $driverType = getenv('LOVD_SELENIUM_DRIVER'); $host = 'http://localhost:4444/wd/hub'; $capabilities = null; if ($driverType == 'chrome') { // This is the documented way of starting the chromedriver, but it fails. (at least // on my machine with version 2.23) // putenv('webdriver.chrome.driver=/usr/share/chromedriver'); // $webDriver = ChromeDriver::start(); // Start the chrome driver through the selenium server. fwrite(STDERR, 'Connecting to Chrome driver via Selenium at ' . $host . PHP_EOL); $options = new ChromeOptions(); $options->addArguments(array('--no-sandbox')); $capabilities = DesiredCapabilities::chrome(); $capabilities->setCapability(ChromeOptions::CAPABILITY, $options); } else { // Create Firefox webdriver fwrite(STDERR, 'Connecting to Firefox driver via Selenium at ' . $host . PHP_EOL); $capabilities = array(WebDriverCapabilityType::BROWSER_NAME => 'firefox'); } $webDriver = LOVDWebDriver::create($host, $capabilities, WEBDRIVER_MAX_WAIT_DEFAULT * 1000, WEBDRIVER_MAX_WAIT_DEFAULT * 1000); // Set time for trying to access DOM elements $webDriver->manage()->timeouts()->implicitlyWait(WEBDRIVER_IMPLICIT_WAIT); if (isset($_INI['test']['xdebug_enabled']) && $_INI['test']['xdebug_enabled'] == 'true') { // Load page of target host. This is necessary to set a cookie. $webDriver->get(ROOT_URL . '/src/'); // Enable remote debugging by setting XDebug session cookie. $webDriver->manage()->addCookie(array('name' => 'XDEBUG_SESSION', 'value' => 'selenium')); } } // Wrap the webdriver instance in a custom processor. return $webDriver; }
public function getErrors(UriInterface $uri) { $host = $this->host . ':' . $this->port . '/wd/hub'; $options = new ChromeOptions(); $options->addExtensions(array(__DIR__ . '/extension/console2var.crx')); $caps = DesiredCapabilities::chrome(); $caps->setCapability(ChromeOptions::CAPABILITY, $options); $driver = RemoteWebDriver::create($host, $caps); $filteredErrors = []; try { $driver->get((string) $uri); $errors = $driver->executeScript("return localStorage.getItem(\"js_errors\")", array()); $errorList = explode('###', $errors); foreach ($errorList as $errorElement) { if ($errorElement != "") { $filteredErrors[] = trim($errorElement); } } } catch (\Exception $e) { $filteredErrors[] = "Selenium/Webdriver crashed. " . $e->getMessage(); } $driver->quit(); return $filteredErrors; }