Как загрузить файл в поле входного файла с помощью Selenium Webdriver, когда выполнение скрипта выполняется в браузере контейнера zalenium docker? - PullRequest
0 голосов
/ 07 мая 2020

Я использую Selenium WebDriver для автоматизации. Загрузка файлов в WebDriver выполняется простым использованием метода sendKeys () в поле ввода файла.

Фрагмент кода:

WebElement uploadElement = driver.findElement(By.id("uploadfile"));

// enter the absolute file path into the file input field
uploadElement.sendKeys("C:\\test.txt");

Приведенный выше фрагмент кода работает должным образом, когда выполнение скрипта выполняется на локальном компьютере .. Но он не работает, когда выполнение скрипта выполняется в контейнере Zalenium docker .

Ответы [ 2 ]

0 голосов
/ 24 июня 2020

Это сработало для меня. Для этого не нужно монтировать том

File file = new File(filePath); //my local filepath where the file will be created
        File tempDir = new File(System.getProperty("java.io.tmpdir", null), "uploadFile");
        if (!tempDir.exists()) {
            tempDir.mkdir();
        }
        File fileToCreate = new File(tempDir, file.getName());
        byte[] bytes = Base64.getDecoder().decode(value.getBytes());
        FileUtils.writeByteArrayToFile(fileToCreate, bytes);
        Thread.sleep(3000);
        RemoteWebDriver remoteDriver = new RemoteWebDriver(
                        new URL("http://localhost:4444/wd/hub"), capabilities);
        remoteDriver.setFileDetector(new LocalFileDetector());
        remoteDriver.findElement(locator).sendKeys(fileToCreate.toString());
0 голосов
/ 07 мая 2020

Загрузка файла относительно очень проста, но немного отличается, когда вы используете концепцию Docker. Вам необходимо убедиться, что вы установили детектор файлов для файла (используя класс LocalFileDetector ), который вы хотите загрузить.

См. Фрагмент кода ниже:

WebElement uploadElement = driver.findElement(By.id("uploadfile"));

LocalFileDetector detector = new LocalFileDetector();
File localFile = detector.getLocalFile("C:\\test.txt");

uploadElement.setFileDetector(detector);

// enter the absolute file path into the file input field
uploadElement.sendKeys(localFile.getAbsolutePath());

Приведенный выше фрагмент кода загрузит файл при выполнении сценария в контейнере Local / Remote / Zalenium docker.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...