Загружать файлы на сайт автоматически без фокуса браузера - PullRequest
0 голосов
/ 18 октября 2018

Я работаю над тестовым сценарием, чтобы автоматизировать загрузку файлов на сайт и выполнить сценарий в автономном режиме.Нужно загрузить список файлов один за другим, я разрабатываю его на основе Selenium WebDriver.Я использую AutoIT скрипт для обработки диалогового окна, окна выбора файлов.Параметр $CmdLine[1] содержит путь к фактическому файлу.

ControlFocus("Open a file","","Edit1")
ControlSetText("Open a file","","Edit1", $CmdLine[1])
ControlClick("Open a file","","Button1")

Он выполняется с таким кодом:

Runtime.getRuntime().exec(autoITExecutable);

Открывает диалоговое окно, поэтому он не может работать без фокусировки наокно браузера.Класс java.awt.Robot работает аналогично, ему нужно сосредоточиться на окне браузера.

Я тоже пытался использовать метод sendKeys(), но поле ввода не может обработать файл таким образом.Katalon Studio также не может обработать это поле.

Примеры сайтов с похожими формами:

http://ajaxuploader.com/demo/simple-upload.aspx

https://ec.europa.eu/cefdigital/DSS/webapp-demo/validation

https://tus.io/demo.html

Ответы [ 3 ]

0 голосов
/ 10 ноября 2018

Вы можете попробовать следующий код:

// wait for the window to appear
WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.alertIsPresent());

// switch to the file upload window
Alert alert = driver.switchTo().alert();

// enter the filename
alert.sendKeys(fileName);

// hit enter
Robot r = new Robot();
r.keyPress(KeyEvent.VK_ENTER);
r.keyRelease(KeyEvent.VK_ENTER);

// switch back
driver.switchTo().activeElement();
0 голосов
/ 12 ноября 2018

Попробуйте это,

webElement.sendKeys(System.getProperty("user.dir") + "file path");

Здесь,

  • webElement - это ваш элемент, идентифицированный для загрузки файла.Убедитесь, что элемент ввода видим.
  • попробуйте указать путь к файлу как относительный путь к содержимому, которое мы хотим загрузить.

Убедитесь, что вы не нажимаете накнопка обзора, нажатие на кнопку обзора откроет диалоговое окно Windows, в котором не будет работать Selen WebDriver.

0 голосов
/ 18 октября 2018

Используйте Selenium напрямую:

driver().findElement(By.id("ContentPlaceHolder1_Uploader1__Insert")).sendKeys(pathToFile);

При этом вы можете избежать использования системного диалогового окна зависимости.

...