Как я могу загрузить файл, используя PHP и Facebook WebDriver? - PullRequest
0 голосов
/ 24 декабря 2018

Я использую PHP и Behat (без норки) с Selenium, используя Facebook WebDriver.Я работаю над последним тестовым примером, который заключается в загрузке локального файла (изображения), сохраненного на моем компьютере (с использованием Mac).Как я могу загрузить файл, используя PHP и Facebook WebDriver?

Я получаю элемент кнопки «загрузить», а затем появляется всплывающее окно, чтобы выбрать файл.

$this>webDriver>setFileDetector(new\Facebook\WebDriver\Remote\LocalFileDetector());

// upload the file and submit the form
$this>webDriver>getKeyboard()>sendKeys("/Users/Guest/Documents/image.jpg/;

Но это не работает.

Я также получаю эту ошибку:

Неустранимая ошибка: необработанная ошибка: вызов неопределенного метода Facebook \ WebDriver \Remote \ RemoteWebDriver :: setFileDetector () в /Users/Guest/Documents/features/bootstrap/FeatureContext.php:232

1 Ответ

0 голосов
/ 18 апреля 2019

setFileDetector - это метод класса RemoteWebElement, а не класса RemoteWebDriver.Вы должны найти элемент и затем вызвать setFileDetector () для него.См. Этот пример:

Источник: https://github.com/facebook/php-webdriver/wiki/Upload-a-file

  // getting the input element
  $fileInput = $driver->findElement(WebDriverBy::id('file_input'));
  // set the file detector
  $fileInput->setFileDetector(new LocalFileDetector());
  // upload the file and submit the form
  $fileInput->sendKeys($filePath)->submit();

Примечание: строка "$ fileInput-> sendKeys ($ filePath) -> submit ();"не работал для меня и вызывал ошибки.Я удалил вызов функции submit и заставил его работать: "$ fileInput-> sendKeys ($ filePath);".После этой строки вы захотите найти кнопку отправки формы и нажать ее, как и любую другую форму.Этот вызов sendKeys заменяет нажатие кнопки обзора и выбор файла для загрузки.Если вы сделаете снимок экрана после этого вызова функции, вы увидите имя выбранного файла рядом с кнопкой «Обзор ...» так же, как при ручном тестировании формы.

Ссылка на документацию ометод: https://facebook.github.io/php-webdriver/community/Facebook/WebDriver/Remote/RemoteWebElement.html#method_setFileDetector

...