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);
|
$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.
|
* Uploads a file to the Selenium instance and returns the remote path.
|
||||||
*
|
*
|
||||||
|
|
Loading…
Reference in New Issue