Issue #3183420 by alexpott, catch: Override \Behat\Mink\Driver\Selenium2Driver::uploadFile() in DrupalSelenium2Driver

merge-requests/51/head
effulgentsia 2020-11-20 09:55:20 -08:00
parent e2c0ffb48d
commit d77c9b4542
1 changed files with 26 additions and 0 deletions

View File

@ -43,6 +43,32 @@ class DrupalSelenium2Driver extends Selenium2Driver {
$this->getWebDriverSession()->setCookie($cookieArray);
}
/**
* {@inheritdoc}
*/
public function attachFile($xpath, $path) {
$element = $this->getWebDriverSession()->element('xpath', $xpath);
if ('input' !== strtolower($element->name()) || 'file' !== strtolower($element->attribute('type'))) {
$message = 'Impossible to %s the element with XPath "%s" as it is not a %s input';
throw new DriverException(sprintf($message, 'attach a file on', $xpath, 'file'));
}
// Upload the file to Selenium and use the remote path. This will
// ensure that Selenium always has access to the file, even if it runs
// as a remote instance.
try {
$remotePath = $this->uploadFileAndGetRemoteFilePath($path);
}
catch (\Exception $e) {
// File could not be uploaded to remote instance. Use the local path.
$remotePath = $path;
}
$element->postValue(['value' => [$remotePath]]);
}
/**
* Uploads a file to the Selenium instance and returns the remote path.
*