Issue #3183420 by alexpott, catch: Override \Behat\Mink\Driver\Selenium2Driver::uploadFile() in DrupalSelenium2Driver
parent
e2c0ffb48d
commit
d77c9b4542
|
@ -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.
|
||||
*
|
||||
|
|
Loading…
Reference in New Issue